匹配键和更新嵌套字典的值的结果与预期不符

时间:2021-05-13 01:28:19

标签: python dictionary

我正在使用 Matching keys then changing the values of nested dictionaries 中的解决方案将 dict_1 的键和“子键”与 dict_2 匹配,然后更新 dict_1 中的值:

# input:
dict_1 = {'741299': {'british': 0, 'fashion': 0, 'award': 0}, '741309': {'british': 0, 'fashion': 0, 'award': 0},
          '780718': {'british': 0, 'fashion': 0, 'award': 0}, '780723': {'british': 0, 'fashion': 0, 'award': 0},
          '783802': {'british': 0, 'fashion': 0, 'award': 0}, '783803': {'british': 0, 'fashion': 0, 'award': 0},
          '807600': {'british': 0, 'fashion': 0, 'award': 0}, '807606': {'british': 0, 'fashion': 0, 'award': 0},
          '809481': {'british': 0, 'fashion': 0, 'award': 0}, '809495': {'british': 0, 'fashion': 0, 'award': 0}}

dict_2 = {'741299': {}, '741309': {'british': 2}, '780718': {}, '780723': {},
          '783802': {'british': 5, 'fashion': 5, 'award': 4}, '783803': {'award': 2},
          '807600': {}, '807606': {}, '809481': {}, '809495': {}}

for k in dict_1:
    dict_1[str(k)].update(dict_2[str(k)])

print(dict_1)

给定这个输入,输出应该是:

# expected output:
{'741299': {'british': 0, 'fashion': 0, 'award': 0}, '741309': {'british': 2, 'fashion': 0, 'award': 0},
 '780718': {'british': 0, 'fashion': 0, 'award': 0}, '780723': {'british': 0, 'fashion': 0, 'award': 0},
 '783802': {'british': 5, 'fashion': 5, 'award': 4}, '783803': {'british': 0, 'fashion': 0, 'award': 2},
 '807600': {'british': 0, 'fashion': 0, 'award': 0}, '807606': {'british': 0, 'fashion': 0, 'award': 0},
 '809481': {'british': 0, 'fashion': 0, 'award': 0}, '809495': {'british': 0, 'fashion': 0, 'award': 0}}

然而,这是我运行代码后得到的输出:

# Actual output:
{{'741299': {'british': 5, 'fashion': 5, 'award': 2}, '741309': {'british': 5, 'fashion': 5, 'award': 2},
  '780718': {'british': 5, 'fashion': 5, 'award': 2}, '780723': {'british': 5, 'fashion': 5, 'award': 2},
  '783802': {'british': 5, 'fashion': 5, 'award': 2}, '783803': {'british': 5, 'fashion': 5, 'award': 2},
  '807600': {'british': 5, 'fashion': 5, 'award': 2}, '807606': {'british': 5, 'fashion': 5, 'award': 2},
  '809481': {'british': 5, 'fashion': 5, 'award': 2}, '809495': {'british': 5, 'fashion': 5, 'award': 2}}

需要注意的一点是,我使用一个函数创建了 dict_1dict_2,该函数将创建一个给定单词列表的字典。本例中的dict_1dict_2是通过函数创建的dict_1dict_2的打印输出获得的。

我花了几个小时试图在我的函数和代码中找到问题,但我似乎无法修复输出。

0 个答案:

没有答案