在 Python 中交换字典中的键和值

问题描述 投票:0回答:1

我正在尝试交换字典的键和值,尽管我在网上搜索并找到了执行此操作的方法,但我不断收到错误。

def dict_reverser(dict1, dict2):
    for k, v in dict2.items():
        if v in dict1:
            dict1[v].append(k)
        else:
            dict1[v] = k

    print(dict1)

exampleDict = {"Ice": "Cream", "Age": "21", "Light": "Cream", "Double": "Cream"}
myDict = {}

dict_reverser(myDict, exampleDict)

我得到的错误是:

dict1\[v\].append(k)

AttributeError: 'str' object has no attribute 'append'

我尝试过 dict[v] += k 但这只是连接了所有内容,正如预期的那样。

python dictionary swap
1个回答
0
投票

使用 defaultdict 创建您的列表。

from collections import defaultdict

example_dict = {"Ice": "Cream", "Age": "21", "Light": "Cream", "Double": "Cream"}
my_dict = defaultdict(list)


def dict_reverser(my_dict, example_dict):
    for key, value in example_dict.items():
        my_dict[value].append(key)
    return dict(my_dict)
        
        
test = dict_reverser(my_dict, example_dict)
print(test)
© www.soinside.com 2019 - 2024. All rights reserved.