Skip to main content
 首页 » 编程设计

python之如何以给定的格式反转这本字典

2025年05月04日13java哥

我想转换这个:

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)