Я хотел бы получить от этого:
keys = [1,2,3]
к этому:
{1: None, 2: None, 3: None}
Есть ли питонский способ сделать это?
Это ужасный способ сделать это:
>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}
dictionary
python
Хуанхо Конти
источник
источник
dict.fromkeys([1, 2, 3], [])
все ключи отображаются в один и тот же список, и изменение одного из них изменит их все.{k:[] for k in [1, 2, 3]}
все еще безопасна, хотя.никто не заботился о том, чтобы дать решение для всестороннего понимания?
источник
False
).источник
dict.fromkeys(keys, [])
Вывод:
источник
keyDict
вводит в заблуждение, так как первая строка кода возвращает aset
, а не adict
.источник
TypeError: 'type' object is not iterable
:?list
что это тип. Если у вас нет чего-то подобногоlist = []
, описанный выше метод всегда выдаст вам одну и ту же ошибкуВо многих рабочих процессах, где вы хотите прикрепить значение по умолчанию / начальное значение для произвольных ключей, вам не нужно заранее хешировать каждый ключ отдельно. Вы можете использовать
collections.defaultdict
. Например:Это более эффективно, избавляет от необходимости хэшировать все ваши ключи при создании экземпляра. Более того,
defaultdict
это подклассdict
, поэтому обычно нет необходимости преобразовывать обратно в обычный словарь.Для рабочих процессов, где вам требуются элементы управления разрешенными ключами, вы можете использовать
dict.fromkeys
согласно принятому ответу:источник