我想将其转换为:
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']}
最佳答案
您可以将defaultdict
与list
一起使用:
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']}
或者,您可以将普通的
dict
与setdefault
一起使用:result = {}
for key, values in d.items():
for value in values:
result.setdefault(value, []).append(key)
关于python - 如何以给定的格式反转该词典?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57110260/