- 1
- 2
- 3
def dict_to_tuple(d):
"""Converts an ordered dict into a tuple."""
return tuple(dict_to_list(d))
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−99
def dict_to_tuple(d):
"""Converts an ordered dict into a tuple."""
return tuple(dict_to_list(d))
wvxvw 11.06.2014 19:23 # 0
bormand 11.06.2014 19:28 # 0
Ведь на самом деле это что-то в духе dict_keys_to_tuple ([key1, key2, ...]) или dict_values_to_tuple ([val1, val2, ...]) или dict_pairs_to_tuple ([(key1, val1), (key2, val2) ...]) или даже что-то такое: ([key1, val1, key2, val2, ...]). Но из названия и докстринга совсем не понятно, что именно имел в виду автор.
wvxvw 11.06.2014 19:35 # 0
bormand 11.06.2014 19:39 # 0
И что именно там вернули? :) И всяко там в доке написано не "преобразует словарь в массив", а что-то более точное...
Вот взять тот же for по словарю - в крестах он возвращает пары из ключа и значения, в жс - ключи, в пыхе - ключи или пары из ключа и значения. И назвать все эти штуки просто "обходом словаря" и писать в мане "обходит словарь" было бы опрометчиво.
Из-за этой неоднозначной херни мне и не нравится понятие "преобразование типов". Для чего-то сложнее арифметики оно работает со скрипом, и только после чтения манов.
bormand 11.06.2014 19:45 # 0
- в пыхе - ключи или пары из ключа и значения
+ в пыхе - значения или пары из ключа и значения
wvxvw 11.06.2014 19:49 # 0
Ну на каком-то уровне нужно просто запомнить как и что делает используемая библиотека. Может не идеальное название, а с другой стороны, если все писать в названии, то нужно было бы что-то типа . А потом еще можно в названии уточнить как именно порядок добавления обрабатывался конкурирующими потиками и т.д. Где-то все равно прийдется остановиться.
bormand 11.06.2014 19:50 # 0
А какой функцией там это делается, если не секрет? Не _.values() случаем? :)
> как именно порядок добавления обрабатывался конкурирующими потиками
Если не хочется фиксировать порядок - в доке достаточно фразы "порядок не определен, не полагайтесь на него".
> Где-то все равно прийдется остановиться.
Здесь согласен. Но останавливаться в самом начале пути тоже не самое удачное решение...
wvxvw 11.06.2014 19:58 # 0
bormand 11.06.2014 20:10 # +2
Ну так это уже огромный шаг вперед по сравнению с "функция преобразует любую хуиту в массив"... Эдак можно вообще скатиться до фразы "это функция, она принимает аргументы и возвращает значения".
P.S. Может быть у меня крестоблядская профдеформация, но видя в доке фразу "функция преобразует нечто в массив" я вижу только unspecified behavior или, в лучшем случае, implementation defined. И тупо не смогу этой функцией воспользоваться. Сегодня на тесте она возвращает ключи, но кто знает, вдруг завтра она начнет возвращать значения? И если в доке ничего не написано о порядке - я читаю это только как "порядок не определен". Даже если на входе OrderedDict.
Доктор, это излечимо?
bormand 11.06.2014 19:46 # +1
Ну вот открыл ман по подчерку, а там...
_.keys()
_.values()
_.pairs()
Действительно, в том же подчерке никто даже не задумывался о таких вещах, и вместо дебильного object_to_array сделали 3 интуитивных и наглядных функции.
wvxvw 11.06.2014 19:55 # 0
Так а кто говорит, что в Питоне у OrderedDict нету штатной возможности получить пары, ключи и значения? Конечно есть.
bormand 11.06.2014 19:57 # 0
_.toArray(list)
Creates a real Array from the list (anything that can be iterated over). Useful for transmuting the arguments object.
Збс. Т.е. я должен методом проб и ошибок узнавать, что именно делает эта функция? Prayer-based programming какой-то.
wvxvw 11.06.2014 20:00 # +2
bormand 11.06.2014 20:03 # 0
Ну а нахер тогда вообще этот dict_to_list сдался?
Если бы это была полиморфная функция to_list(), которая может преобразовать в список даже солнце, даже небо, даже Аллаха - то смысл бы еще был... Но раз она работает только на упорядоченных списках, а у них такая уже есть - то в чем вообще смысл ее существования?
wvxvw 11.06.2014 20:21 # 0