我有以下两个字典:
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
密钥的子集(,我基本上想把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]
而不是[value1, value2]
。
有人能帮忙吗?非常感谢。
这样的东西应该可以工作:
{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]}
flow_dist = flow.copy()
for x in flow:
if x in dist:
flow_dist[x].append(dist[x])