【发布时间】:2017-11-02 23:50:29
【问题描述】:
我正在尝试使用另一个字典中的键值对来更新字典键。我试图组合的两个字典都嵌套在列表中:
dictionary1 = [{ '32639': {'78549': {'526' : { 'sum': 8930.40, 'min' : 2380, 'max': 74839}}}} , {'89304': {'20384': {'152' : { 'sum': 51235.20, 'min' : 4512, 'max': 362.69}}}}, { '41526': {'45315': {'364' : { 'sum': 8985.65, 'min' : 3632.32, 'max': 4558.15}}}}]
dictionary2 = [{'32639':'90283'}, {'49034': '89203'}, {'28942': '39024'}, {'41526':'24903'} ]
我希望生成的字典看起来与字典 1 完全相同,但是如果字典 1 中字典的键位于字典 2 字典中的键中,则应更改它们。
结果字典:
new_dictionary = [{ '90283': {'78549': {'526' : { 'sum': 8930.40, 'min' : 2380, 'max': 74839}}}} , {'89304': {'20384': {'152' : { 'sum': 51235.20, 'min' : 4512, 'max': 362.69}}}}, { '24903': {'45315': {'364' : { 'sum': 8985.65, 'min' : 3632.32, 'max': 4558.15}}}}]
我已经尝试过:
list1 = []
for d1, d2 in zip(dictionary1, dictionary2):
for key, value in d1.iteritems():
new_dict = {}
if key in d2:
new_dict[d2[key]] = value
list1.append(new_dict)
else:
new_dict[key] = value
list1.append(new_dict)
但是它不起作用,但是在这个示例数据上它起作用了,程序仅根据字典 2 的长度迭代字典 1。因此,我尝试使用包含 841 个字典(字典 1)和 53 个字典列表(字典 2)的列表来运行它,并且它只会在退出之前转换字典 1 中的前 53 个键。
【问题讨论】:
标签: python python-2.7 list dictionary iteration