![](/img/trans.png)
[英]Combine two list of dict to one dict by adding value of one list of dict as key to another
[英]How to combine two dictionaries? One dict as key, another dict as value
我有两本词典
Dict0 = {'a':0, 'b':1, 'c':2}
Dict1 = {0 : {'a0' : 0,'a1' : 1,'a2' : 2},
1 : {'b0' : 0,'b1' : 1,'b2' : 2},
2 : {'c0' : 0,'c1' : 1,'c2' : 2}}
我想获得一个结合字典CombDict
,它使用的键Dict0
作为值CombDict
,并使用的值Dict1
作为键CombDict
CombDict = {{'a0':0,'a1':1,'a2':2}:'a',{'b0':0,'b1':1,'b2':2}'b',{'c0':0,'c1':1,'c2':2}:'c'}
我知道这是非常基本的。 我的逻辑代码是写的,但肯定是错的。
CombDict = {}
for k0, v0 in Dict0:
CombDict.values()= k0
for k1,v1 in Dict1:
CombDict.keys() = v1
有什么建议吗? 谢谢。 顺便说一句,如果你想让字典对你更有意义,那就去编辑它们吧。
由于字典是可变的,因此您不能将字典用作另一个字典的键或将它们存储在一个字典中。
您将不得不捕获字典的不可变“快照”:
def dict_to_key(d):
return tuple(sorted(d.items()))
如果字典值也不可变,则可以使用dict_to_key()
函数的返回值作为键。
现在您可以构建组合字典:
CombinedDict = {dict_to_key(Dict1[v]): k for k, v in Dict0.items()}
演示:
>>> Dict0 = {'a':0, 'b':1, 'c':2}
>>> Dict1 = {0 : {'a0' : 0,'a1' : 1,'a2' : 2},
... 1 : {'b0' : 0,'b1' : 1,'b2' : 2},
... 2 : {'c0' : 0,'c1' : 1,'c2' : 2}}
>>> def dict_to_key(d):
... return tuple(sorted(d.items()))
...
>>> {dict_to_key(Dict1[v]): k for k, v in Dict0.items()}
{(('b0', 0), ('b1', 1), ('b2', 2)): 'b', (('a0', 0), ('a1', 1), ('a2', 2)): 'a', (('c0', 0), ('c1', 1), ('c2', 2)): 'c'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.