如何以给定的格式反转该词典

如何以给定的格式反转该词典

我想将其转换为:

d={'move': ['liikuttaa'], 'hide': ['piilottaa', 'salata'], 'six': ['kuusi'], 'fir': ['kuusi']}


到这个:

{'liikuttaa': ['move'], 'piilottaa': ['hide'], 'salata': ['hide'], 'kuusi': ['six', 'fir']}


基本上颠倒了这本字典。同样,新字典的值应采用列表形式,如图所示。

我已经尝试过使用zip函数,通过(v,k)进行反向操作,但是每次遇到相同的错误:“无法散列的类型列表”。

def reverse_dictionary(d):
    reverse=list(zip(d.values(),d.keys()))
    return reverse


输出应为:

{'liikuttaa': ['move'], 'piilottaa': ['hide'], 'salata': ['hide'], 'kuusi': ['six', 'fir']}

最佳答案

您可以将defaultdictlist一起使用:

from collections import defaultdict
from pprint import pprint

d = {'move': ['liikuttaa'],
     'hide': ['piilottaa', 'salata'],
     'six': ['kuusi'],
     'fir': ['kuusi']}

result = defaultdict(list)

for key, values in d.items():
    for value in values:
        result[value].append(key)

pprint(dict(result))


输出:

{'kuusi': ['fir', 'six'],
 'liikuttaa': ['move'],
 'piilottaa': ['hide'],
 'salata': ['hide']}


或者,您可以将普通的dictsetdefault一起使用:

result = {}

for key, values in d.items():
    for value in values:
        result.setdefault(value, []).append(key)

关于python - 如何以给定的格式反转该词典?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57110260/

10-10 21:19