如何解决为什么我尝试遍历列表列表并更新字典值导致字典未更改?
我想遍历一个列表列表,如果列表中的一个实例与字典中的一个键匹配,则将该字典键值加 1。但是,当我执行我的代码时,它返回字典而不更改值。感谢您的时间和帮助。我搜索了一个类似的问题,但没有找到解决这个问题的问题。如果我错过了,我很抱歉。
我有一份飓风及其影响地区的清单。我有一个字典,其中包含唯一受影响区域的键、值对以及受影响的次数(设置为零)。我想遍历飓风实例列表,每次经过字典中的一个位置时,将唯一区域的值增加 1。目前,使用我运行的代码,返回的字典没有变化。
我已经包含了我正在使用的材料的较小示例: (test_list 是受飓风影响的区域列表,生成列表列表)
test_list = [['Central America','Mexico','Cuba','Florida','The Bahamas'],['Lesser Antilles','The Bahamas','United States East Coast','Atlantic Canada'],['The Bahamas','northeastern United States'],'Jamaica','Cayman Islands','Bermuda']]
test_dict = {
'Central America': 0,'Mexico': 0,'Cuba': 0,'The Bahamas': 0,'Lesser Antilles': 0,'Atlantic Canada': 0,'northeastern United States': 0,'Jamaica': 0,'Cayman Islands': 0,'Bermuda': 0}
目标
如果我执行:
area_counted = area_counter(test_list,test_dict)
我会期望:
area_counted = {
'Central America': 1,'Mexico': 1,'Cuba': 2,1,'The Bahamas': 4,'Lesser Antilles': 2,'United States East Coast': 1,'Atlantic Canada': 1,'northeastern United States': 1,'Jamaica': 1,'Cayman Islands': 1,'Bermuda': 1}
然而,这不是我的结果。
def area_count(input_dict,input_list):
new_dict = {}
new_dict.update(input_dict)
for i in list:
for j in i:
if j == new_dict[j]:
new_dict[j] += 1
else:
pass
return new_dict
area_counted = area_count(test_dict,test_list)
print(area_counted)
area_counted = {
'Central America': 0,'Bermuda': 0}
edit-1:将 area_count 参数编辑为 input_list 而不是列表,更正 area_counted 的参数输入顺序以匹配 area_count 函数。
解决方法
new_dict[j]
最初总是等于 0
(因为在 test_dict 中所有值都是 0)
你正在将它与字符串进行比较
if "Central America" == 0:
set_to_1()
希望你能看到这永远不会将它设置为 1
我认为你想要的是
if j in new_dict:
new_dict[j] = 1
作为一个不相关的旁白,你真的不应该命名一个变量 list
,因为它是一个你最终会遮蔽的内置实体
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。