使用相同的键附加来自另一个字典的字典值

时间:2021-07-07 09:07:07

标签: python

我有以下两本词典:

flow = {(49, 53): [122.92], (105, 34): [40.26], (47, 92): [85.28], ...} --- len(flow) = 134

dist= {(101, 15): 688, (47, 92): 156, (13, 62): 208, ...} --- len(dist) = 172

flow 的所有键都包含在 dist 中(flow 键是 dist 键的子集),我基本上想将所有距离附加在 { {1}} 到 dist 的值,以获得以下内容:

flow

到目前为止我所拥有的:

flow_dist = {(49, 53): [122.92, 151], (105, 34): [40.26, 203], (47, 92): [85.28, 156], ...}

输出:list = [flow, dist] new_dict = {key: [elem.get(key) for elem in list] for key in set().union(*list)}

问题是值是 flow_dist = {(49, 53): [[122.92], 151], (105, 34): [[40.26], 203], (47, 92): [[85.28], 156], ...} 而不是 [[value1], value2]

有人可以帮忙吗?欣赏一下。

2 个答案:

答案 0 :(得分:4)

这样的事情应该可以工作:

{key: [value] + flow.get(key, []) for key, value in dist.items()}

示例:

In [11]: dist
Out[11]: {(101, 15): 688, (47, 92): 156, (13, 62): 208}

In [12]: flow
Out[12]: {(49, 53): [122.92], (105, 34): [40.26], (47, 92): [85.28]}

In [13]: {key: [value] + flow.get(key, []) for key, value in dist.items()}
Out[13]: {(101, 15): [688], (47, 92): [156, 85.28], (13, 62): [208]}

答案 1 :(得分:1)

flow_dist = flow.copy()
for x in flow:
    if x in dist:
        flow_dist[x].append(dist[x])