所以我在python中的字典有些问题。例如,我有如下字典:
d1 = {123456:xyz, 892019:kjl, 102930491:{[plm,kop]}
d2= {xyz:987, kjl: 0902, plm: 019240, kop:09829}
我希望嵌套字典看起来像那样。
d={123456 :{xyz:987}, 892019:{kjl:0902}, 102930491:{plm:019240,kop:09829}}
这可能吗?我正在寻找嵌套的词典,但对我来说没有任何作用。
答案 0 :(得分:0)
首先,你不想在你的键和值周围加上括号。
d1 = {'123456':'xyz', '892019':'kjl', '102930491':'plm'}
d2= {'xyz':'987', 'kjl':'0902', 'plm':'019240', 'kop':'09829'}
然后我建议你做一个for循环
for key, value in d1.iter():
d1[key] = d2[value]
我忽略了你的{[plm,kop]}
事。但是如果您理解了第一个例子,那么实现它并不困难。
答案 1 :(得分:0)
您只需循环浏览d1
并从d2
分配正确的值。
<强>代码:强>
d1 = {123456:'xyz', 892019:'kjl', 102930491:['plm','kop']}
d2 = {'xyz':987, 'kjl': 902, 'plm': 19240, 'kop':9829}
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)}
print(result)
<强>输出:强>
{123456: {'xyz': 987}, 892019: {'kjl': 902}, 102930491: {'plm': 19240, 'kop': 9829}}
以上使用isintance()
来检查值是否为列表,因此您可以循环它并从d2
分配正确的值。如果在None
中搜索密钥时遇到dict.get()
,它还会使用KeyError来确保添加d2
。
<强>一衬垫:强>
{k: {k: d2.get(k) for k in v} if isinstance(v, list) else {v: d2.get(v)} for k, v in d1.items()}
但这会变得混乱而且难以维护。