如何在同一词典下合并两个嵌套词典

2024-04-25 07:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有一本字典:

dictA={"nest1":{"01feb":[1,2,3,4,5],"02feb":[1,7,8,9,10]},
       "nest2":{"01feb":[1,2,3,4,5],"02feb":[6,4,8,10,10]}}

里面的列表长度相同。我需要将nest1nest2合并为一个字典,结果应该是这样的:

^{pr2}$

Tags: 列表字典pr2dictanest2nest1
3条回答

请为您的查询找到下面的代码。在

dictA={"nest1":{"01feb":[1,2,3,4,5],"02feb":[1,7,8,9,10]},
       "nest2":{"01feb":[1,2,3,4,5],"02feb":[6,4,8,10,10]}}
result ={}
final_op = {}
for k,v in dictA.iteritems():
    for nk,nv in v.iteritems():
        if result.has_key(nk):
            i=0
            while i < len(result[nk]):
                result[nk][i] += nv[i]
                i += 1
        else:
            result[nk] = nv
final_op['nest'] = result
print final_op

输出:

^{pr2}$

您必须遍历dict并在迭代中更新值。在

dictA={"nest1":{"01feb":[1,2,3,4,5],"02feb":[1,7,8,9,10]},
       "nest2":{"01feb":[1,2,3,4,5],"02feb":[6,4,8,10,10]}}

def merge(dictA):
    merge_dict = {}
    for key in dictA:
        for sub_key in dictA[key]:
            if sub_key in merge_dict:
                # update the nested value
                merge_dict[sub_key] = [sum(x) for x in zip(*[merge_dict[sub_key], dictA[key][sub_key]])]
            else:
                merge_dict[sub_key] = dictA[key][sub_key]
    return merge_dict

merge_dict = merge(dictA)
dictA.clear()
dictA["nest"] = merge_dict

print(dictA)

您可以使用^{}^{}^{},如本例所示(与python2和python3一起使用)。在

dictA = {'nest1': {'01feb': [1, 2, 3, 4, 5], '02feb': [1, 7, 8, 9, 10]},
 'nest2': {'01feb': [1, 2, 3, 4, 5], '02feb': [6, 4, 8, 10, 10]}}

a = (v.items() for _, v in map(list, dictA.items()))
# You can also use another map():
# final = {'nest': {k: list(map(sum, zip(v,j))) for (k, v), (_, j) in zip(*a)}}
final = {'nest': {k: [m+n for m, n in zip(v, j)] for (k, v), (_, j) in zip(*a)}}

print(final)

输出:

^{pr2}$

相关问题 更多 >