Python 为什么我尝试遍历列表列表并更新字典值会导致字典未更改?
我想遍历一个列表列表,如果列表中的一个实例与字典中的一个键匹配,则向该字典键值添加1。但是,当我执行代码时,它会返回字典,而不会更改值。谢谢你的时间和帮助。我搜索了一个类似的问题,但没有找到一个解决这个问题的问题。如果我错过了,我道歉 我有一份飓风及其影响地区的清单。我有一个字典,其中包含唯一受影响区域的键、值对以及受影响的次数(设置为零)。我想遍历飓风实例列表,每次通过字典中的某个位置时,都会将唯一区域的值增加1。目前,对于我正在运行的代码,返回的字典是不变的 我列举了一些我正在使用的材料的小例子: (test_list是一份受飓风影响的区域列表,由此产生一份列表) 目标 如果我表演:Python 为什么我尝试遍历列表列表并更新字典值会导致字典未更改?,python,list,dictionary,iteration,Python,List,Dictionary,Iteration,我想遍历一个列表列表,如果列表中的一个实例与字典中的一个键匹配,则向该字典键值添加1。但是,当我执行代码时,它会返回字典,而不会更改值。谢谢你的时间和帮助。我搜索了一个类似的问题,但没有找到一个解决这个问题的问题。如果我错过了,我道歉 我有一份飓风及其影响地区的清单。我有一个字典,其中包含唯一受影响区域的键、值对以及受影响的次数(设置为零)。我想遍历飓风实例列表,每次通过字典中的某个位置时,都会将唯一区域的值增加1。目前,对于我正在运行的代码,返回的字典是不变的 我列举了一些我正在使用的材料的小
area_counted = area_counter(test_list, test_dict)
我原以为:
area_counted = {
'Central America': 1, 'Mexico': 1, 'Cuba': 2, 'Florida', 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, 'Mexico': 0, 'Cuba': 0, 'Florida', 0, 'The Bahamas': 0, 'Lesser Antilles': 0, 'United States East Coast', 'Atlantic Canada': 0, 'Northeastern United States': 0, 'Jamaica': 0, 'Cayman Islands': 0, 'Bermuda': 0}
编辑-1:编辑区域计数参数以输入列表而不是列表,更正了区域计数的参数输入顺序以匹配区域计数功能。
new\u dict[j]
最初总是等于0
(因为在测试中,所有值都是0)
您正在将其与字符串进行比较
if "Central America" == 0:
set_to_1()
希望你能看到它是如何从不设为1的
我想你想要的是
if j in new_dict:
new_dict[j] = 1
作为一个不相关的旁白,你真的不应该命名一个变量
list
,因为它是一个内置的实体,如果j==new\u dict[j]:将永远不会是真的,因为new\u dict[j]
将是一个int
类似0
,而j
将是一个类似'Central America'
的字符串,这肯定不是您尝试过的。您的代码根本不运行。1) SyntaxError:无效语法,因为您的字典定义不构成字典。2) 你把参数传错了order@ThomasWeller请你详细说明一下词典的创建问题好吗?我有new_dict={},更新new_dict,然后在函数末尾返回new_dict。我错过了什么?谢谢你指出我的参数错误,我显然应该在发帖前抓住它。乔丹,谢谢你的反馈。它帮助我查看if语句将字符串与值进行比较。你的建议,如果j在新词中:
为我解决了这个问题。
if j in new_dict:
new_dict[j] = 1