当我创建一个多级字典(或JSON)时,我必须在每一级进行初始化,它会覆盖旧的数据
比如我想创造一个
dict1 = {}
for i in ["i","you"]:
for j in ["have", "has", "had"]:
for k in ["a","an"]:
for m in ["apple", "pear"]:
for n in ["cat","dog"]:
dict1[i] = {j:{k:{"fruit":m,"animal":n}}}
print(dict1)
我想知道
{'i': {'have': {'a': {'fruit': 'apple', 'animal': 'cat'}}},
'you': {'have': {'a': {'fruit': 'apple', 'animal': 'dog'}}}
等等。但是我只收到最后2个排列,因为它们总是被覆盖。
2条答案
按热度按时间djp7away1#
一次性创建嵌套结构需要在每个级别上进行良好的初始化。在您的方法中,可以采用
defaultdict
输出不完全是一个dict,但以相同的方式工作。
nwlls2ji2#
每次迭代内部循环时都要重写键。使用
list
代替输出
编辑
如果添加了额外的唯一密钥,则可以保留
dict
输出
编辑二:
dict
中的密钥必须是唯一的,您不能拥有i
密钥多次。如果你不想使用上面的选项,唯一的方法是使用tuple
作为密钥#在
fruit
和animal
的内部循环中仍然会有重复键的问题(如果您确实需要它们),要获得所有选项,您仍然需要一个列表