Python 为什么我尝试遍历列表列表并更新字典值会导致字典未更改?

Python 为什么我尝试遍历列表列表并更新字典值会导致字典未更改?,python,list,dictionary,iteration,Python,List,Dictionary,Iteration,我想遍历一个列表列表,如果列表中的一个实例与字典中的一个键匹配,则向该字典键值添加1。但是,当我执行代码时,它会返回字典,而不会更改值。谢谢你的时间和帮助。我搜索了一个类似的问题,但没有找到一个解决这个问题的问题。如果我错过了,我道歉 我有一份飓风及其影响地区的清单。我有一个字典,其中包含唯一受影响区域的键、值对以及受影响的次数(设置为零)。我想遍历飓风实例列表,每次通过字典中的某个位置时,都会将唯一区域的值增加1。目前,对于我正在运行的代码,返回的字典是不变的 我列举了一些我正在使用的材料的小

我想遍历一个列表列表,如果列表中的一个实例与字典中的一个键匹配,则向该字典键值添加1。但是,当我执行代码时,它会返回字典,而不会更改值。谢谢你的时间和帮助。我搜索了一个类似的问题,但没有找到一个解决这个问题的问题。如果我错过了,我道歉

我有一份飓风及其影响地区的清单。我有一个字典,其中包含唯一受影响区域的键、值对以及受影响的次数(设置为零)。我想遍历飓风实例列表,每次通过字典中的某个位置时,都会将唯一区域的值增加1。目前,对于我正在运行的代码,返回的字典是不变的

我列举了一些我正在使用的材料的小例子: (test_list是一份受飓风影响的区域列表,由此产生一份列表)

目标

如果我表演:

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