首页 > 解决方案 > 如何防止for循环覆盖字典?

问题描述

我正在通过使用 for 循环为 JSON 文件创建字典。但是我的for循环覆盖了条目

second_dict={}
third_dict={}

name=['suzen','lilly','sara']
hobbies=['chess','reading','dancing']
age=[13,14,15]

for i in range(len(name)):
    second_dict["hobbies"]=hobbies[i]
    second_dict["age"]=age[i]
    third_dict[name[i]]=second_dict
print(third_dict)

我得到这个输出

{'suzen': {'hobbies': 'chess', 'age': 13},
'lilly': {'hobbies': 'chess', 'age': 13}, 
 'sara': {'hobbies': 'chess', 'age': 13}}

而不是得到这个

{'suzen': {'hobbies': 'chess', 'age': 13},
 'lilly': {'hobbies': 'reading', 'age': 14}, 
 'sara': {'hobbies': 'dancing', 'age': 15}}

谁能指出我的错误?谢谢你

标签: pythondictionary

解决方案


new_dict={}
name=['suzen','lilly','sara']
hobbies=['chess','reading','dancing']
age=[13,14,15]
x = zip(name, hobbies, age)
for n,h,a in x:
    new_dict[n]={'hobbies': h, 'age': a}

print(new_dict) 

third_dict={}
name=['suzen','lilly','sara']
hobbies=['chess','reading','dancing']
age=[13,14,15]

for i in range(len(name)):
    second_dict={}
    second_dict["hobbies"]=hobbies[i]
    second_dict["age"]=age[i]

    third_dict[name[i]]=second_dict
print(third_dict)

正如评论中所指出的,您应该为每个创建一个新对象second_dict,有 3 个second_dict


推荐阅读