我想转换这个:
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使用列表:
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)
