将一个字典附加到嵌套字典

2024-05-19 22:25:54 发布

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

我的两本字典看起来像

d1={123456 :{u'xyz':u'987'}, 892019:{u'kjl':u'0902'}, 102930491:{u'plm':u'019240',u'kop':u'09829'}}
d2= {u'random_no_1': [u'123456', u'892019'], u'random_no_2': [u'102930491']}

我想要一本组合字典。像这样的。你知道吗

d3 = {'random_no_1':{123456:{xyz:987}, 892019:{kjl:0902}}, 'random_no_2':{102930491:{plm:019240,kop:09829}}

我试过这个循环,但它只会先印到钥匙上。你知道吗

result = {}
for k, v in d1.items():
  if isinstance(v, list):
     result[k] = {k: d2.get(k) for k in v}
  else:
      result[k] = {v: d2.get(v)}

所以我的结果是这样的。你知道吗

result = {'random_no_1':{123456 : None}, 892019: None}, 'random_no_2':{102930491: None} 

我想问题已经解决了,任何建议都将不胜感激。你知道吗


Tags: noinnoneforget字典randomresult
3条回答

你可以试试这个

>>> d1
{123456: {u'xyz': u'987'}, 102930491: {u'kop': u'09829', u'plm': u'019240'}, 892019: {u'kjl': u'0902'}}
>>> d2
{u'random_no_2': [u'102930491'], u'random_no_1': [u'123456', u'892019']}
>>> {key:value for key,value in d2.iteritems()}
{u'random_no_2': [u'102930491'], u'random_no_1': [u'123456', u'892019']}
>>> {key:[item for item in value] for key,value in d2.iteritems()}
{u'random_no_2': [u'102930491'], u'random_no_1': [u'123456', u'892019']}
>>> {key:[d1.get(int(item)) for item in value] for key,value in d2.iteritems()}
{u'random_no_2': [{u'kop': u'09829', u'plm': u'019240'}], u'random_no_1': [{u'xyz': u'987'}, {u'kjl': u'0902'}]}

使用迭代。你知道吗

演示:

d1={123456 :{"xyz":987}, 892019:{"kjl":902}, 102930491:{"plm":19240,"kop":9829}}
d2= {'random_no_1': [123456, 892019], '3.9.1.3': [102930491]}

d3 = {}
for k,v in d2.items():
    d3[k] = {}
    for i in v:
        d3[k][i] = d1.get(i)
print(d3)

或一行

d3 = dict((k, {i: d1.get(i) for i in v}) for k,v in d2.items())

输出:

{'random_no_1': {123456: {'xyz': 987}, 892019: {'kjl': 902}}, '3.9.1.3': {102930491: {'kop': 9829, 'plm': 19240}}}

你可以用一个衬垫

result = {key: {val: d1.get(val) for val in d2[key]} for key in d2}

相关问题 更多 >