Я собираюсь взять другую тактику здесь. Ваш вопрос немного дезинформирован. Подразумевается, что «лучше» избегать повторения ключей словаря. Как уже упоминалось, вы можете перебирать значения словаря. Но, поскольку внутри Python хранятся словари через два массива , итерации неизбежны.
Возвращаясь к вашему основному вопросу:
Я хочу что-то вроде dictionary[]["value"]=[]
, чтобы все "значение"
атрибуты установлены на []
.
Просто используйте collections.defaultdict
:
from collections import defaultdict
d = {k: defaultdict(list) for k in dictionary}
print(d['key1']['value']) # []
print(d['key2']['value']) # []
Для структуры словаря, которую вы определили, это, безусловно, будет более эффективным, чем преобразование строк с помощью repr
+ подстановки регулярных выражений.
Если вы настаиваете на явной установке ключей, вы можете избежать defaultdict
ценой внутреннего словаря:
d = {k: {i: [] for i in v} for k, v in dictionary.items()}
{'key1': {'value': []}, 'key2': {'value': []}}