Форум сайта python.su
ключи словаря - это множество (сам словарь - нагруженное множество)
читаемость важна
а преимущество… ну, к примеру, не нужно поддерживать индексацию
Отредактировано py.user.next (Май 6, 2013 13:19:07)
Офлайн
В данном случае я думаю не нужен цикл. Можно использовать проверку на вхождение: проверка
наличия ключа.
>>> myDict = {'a': 1, 'b': 2} >>> if 'a' in myDict: del myDict['a'] >>> myDict {'b': 2} >>>
Отредактировано ATOM (Май 6, 2013 23:51:37)
Офлайн
ATOMесли цикл не нужен, а он нужен ему зачем-то, то просто .pop() выполняется
В данном случае я думаю не нужен цикл.
>>> myDict = {'a': 1, 'b': 2} >>> myDict.pop('a', None) 1 >>> myDict.pop('a', None) >>> myDict {'b': 2} >>>
Офлайн
py.user.nextИзвините, но здесть это не актуально. Получается матфетишизм :) Кроме того, это определение не совсем корректно.
ключи словаря - это множество (сам словарь - нагруженное множество)
Отредактировано 4kpt (Май 8, 2013 00:33:17)
Офлайн
4kptкод более логичный
Получается матфетишизм :)
4kptсловарь не является нагруженным множеством ?
Кроме того, это определение не совсем корректно.
Офлайн
А Вы считаете, что является? К словарю сложно подобрать математическое определение. Я могу навскидку придумать еще как минимум два, которые тоже будут не менее корректны чем Ваши, но при этом не будут полностью отвечать словарю :)
Офлайн
есть динамическая структура - нагруженное множество, словарь является такой структурой
4kptя думаю, что ты говоришь про что-то другое
А Вы считаете, что является?
Офлайн
в python2 dict.keys() возвращает list, а в python3 view, так что в python3 list(dict.keys()) правильное решение
PEP3106
Офлайн
pep3106
The objects returned by the .keys() and .items() methods behave like sets.
The objects returned by .keys() and .items() are fully interoperable with instances of the built-in set and frozenset types; for example:is guaranteed to be True (except when d is being modified simultaneously by another thread).set(d.keys()) == d.keys()
bismigalisи что, множество ключей приводится к списку
в python2 dict.keys() возвращает list
>>> d = {1: 2, 3: 4} >>> k = d.keys() >>> k dict_keys([1, 3]) >>> k & {1, 2} {1} >>> [1, 3] & {1, 2} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for &: 'list' and 'set' >>> >>> set(k) == k True >>> list(k) == k False >>>
bismigalis
list(dict.keys()) правильное решение
set(d.keys())
Отредактировано py.user.next (Май 8, 2013 10:00:04)
Офлайн
py.user.next
Вопрос снят. Просто это опеределение никак не соотносится со старой теорией множеств. Это, как я понял, новая структура, принятая в рассмотрение в теории множеств специально для описания процесса программирования. Для себя я словари представлял по-другому :)
Отредактировано 4kpt (Май 8, 2013 12:15:54)
Офлайн