如何反转Dict [object,object]以获得Dict [object,list]?

时间:2019-11-30 22:11:14

标签: python dictionary

我看了另一个反问,但是那个没有字典,但没有列表。

所以我有一个字典,基本上我想将其反转。因此,键成为值,而值成为键。例如,如果我有:{'Sun' : ['hot', 'yellow'], 'Car': ['yellow'], 'Fire': ['hot']}, 它应该返回:{'yellow': ['Sun', 'Car'], 'hot': ['Sun', 'Fire']}

我尝试仅获取键值,但是我不知道如何将其输入字典并为它们分配键值。 我将不胜感激,但会尽可能使用最基本的方法 谢谢

1 个答案:

答案 0 :(得分:0)

from collections import OrderedDict

def invert(d):
    inversion = {}
    for key, vals in d.items():
        for val in vals:
            lst = inversion.get(val, None)
            if lst is None:
                lst = []
                inversion[val] = lst
            lst.append(key)
    for lst in inversion.values():
        lst.sort()
    return OrderedDict(sorted(inversion.items()))

print(invert({'Sun' : ['hot', 'yellow'], 'Car': ['yellow'], 'Fire': ['hot']}))
#-> OrderedDict([('hot', ['Fire', 'Sun']), ('yellow', ['Car', 'Sun'])])