我想合并这些词典:
d1 = {'r1':[100,200,300],'r2':[400,500]}
d2 = {100:[110,120,130],200:[210,220],300:[310,320],400:[410,420],500:[510,520]}
像这样:
d3 = {'r1':[100,[110,120,130],200,[210,220],300,[310,320]],'r2':[400,[410,420],500, [510,520]]}
我该怎么做?
答案 0 :(得分:1)
我喜欢这个问题。
>>> d3 = {k: [a for i in v for a in (i, d2[i])] for k, v in d1.items()}
>>> d3
{'r1': [100, [110, 120, 130], 200, [210, 220], 300, [310, 320]], 'r2': [400, [410, 420], 500, [510, 520]]}
eveyone似乎只是从您想要的输出中稍微偏离,但这看起来像是对我来说。
这是一个非常嵌套的列表推导和dict comprehenions的使用。
答案 1 :(得分:0)
dict( (k, v + [ d2[k2] for k2 in v if k2 in d2 ]) for k,v in d1.iteritems())
答案 2 :(得分:0)
d3 = {}
for k, v in d1.items():
new_v = []
for k2 in v:
new_v.append(k2)
new_v.append(d2.get(k2, []))
d3[k] = new_v
答案 3 :(得分:0)
In [102]:
import itertools
{k:list(itertools.chain(*zip(item, map(d2.get, item)))) for k, item in d1.items()}
Out[102]:
{'r1': [100, [110, 120, 130], 200, [210, 220], 300, [310, 320]],
'r2': [400, [410, 420], 500, [510, 520]]}