繁体   English   中英

如何结合两个词典? 一个字典作为关键,另一个字典作为价值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM