python - 如何防止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}}
谁能指出我的错误?谢谢你
解决方案
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
。
推荐阅读
- c++ - typedef 改变编译器行为?
- c - 如果我尝试使用 %c 和 %s 打印大整数怎么办?
- sugarcrm - 如何允许访问分配给用户 SUITECRM 的记录
- javascript - How to create Dynamic Function Name in ReactJS & use on onBlur?
- java - java - 如何将lastmodifiedfile从文件夹移动到java中的其他文件夹?
- android - 使用 object-fit 时移动 chrome 上的视频渲染问题
- excel - 如何使用大于 24 小时的时间格式?
- python - 你可以在 gitlab 管道中存储一个值,以便以后的管道可以访问它吗?
- html - 如何将复选框绑定到Angular7中的字符串值?
- python - 增加 Pytorch 中显示的图像大小