Найти - Пользователи
Полная версия: Удаление частей словаря в цикле
Начало » Python для новичков » Удаление частей словаря в цикле
1 2 3
py.user.next
ключи словаря - это множество (сам словарь - нагруженное множество)
читаемость важна
а преимущество… ну, к примеру, не нужно поддерживать индексацию
ATOM
В данном случае я думаю не нужен цикл. Можно использовать проверку на вхождение: проверка
наличия ключа.

>>> myDict = {'a': 1, 'b': 2}
>>> if 'a' in myDict:
        del myDict['a']
   
>>> myDict
{'b': 2}
>>> 
py.user.next
ATOM
В данном случае я думаю не нужен цикл.
если цикл не нужен, а он нужен ему зачем-то, то просто .pop() выполняется

>>> myDict = {'a': 1, 'b': 2}
>>> myDict.pop('a', None)
1
>>> myDict.pop('a', None)
>>> myDict
{'b': 2}
>>>
4kpt
py.user.next
ключи словаря - это множество (сам словарь - нагруженное множество)
Извините, но здесть это не актуально. Получается матфетишизм :) Кроме того, это определение не совсем корректно.
py.user.next
4kpt
Получается матфетишизм :)
код более логичный

4kpt
Кроме того, это определение не совсем корректно.
словарь не является нагруженным множеством ?
или что ключи словаря - это не множество ?
4kpt
А Вы считаете, что является? К словарю сложно подобрать математическое определение. Я могу навскидку придумать еще как минимум два, которые тоже будут не менее корректны чем Ваши, но при этом не будут полностью отвечать словарю :)
py.user.next
есть динамическая структура - нагруженное множество, словарь является такой структурой

4kpt
А Вы считаете, что является?
я думаю, что ты говоришь про что-то другое
bismigalis
в python2 dict.keys() возвращает list, а в python3 view, так что в python3 list(dict.keys()) правильное решение

PEP3106
py.user.next
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:
set(d.keys()) == d.keys()
is guaranteed to be True (except when d is being modified simultaneously by another thread).

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())
и это соотвествует тому, чем являются ключи
4kpt
py.user.next
Вопрос снят. Просто это опеределение никак не соотносится со старой теорией множеств. Это, как я понял, новая структура, принятая в рассмотрение в теории множеств специально для описания процесса программирования. Для себя я словари представлял по-другому :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB