如何在python中将键更改为值?

2024-09-19 23:29:35 发布

您现在位置:Python中文网/ 问答频道 /正文

def allicate(a_dict):
    ans_dict = {}
    for key,item in a_dict.items():
        ans_dict[item] = [key]
    return ans_dict


my_dict = {
"name.txt":"Ram",
"teach.txt":"Shyam",
"cod.txt":"Ram"}

print(allicate(my_dict))

应该打印出来

{"Ram":["name.txt","cod.txt"],
 "Shyam":["teach.txt"]}

Tags: keynameintxtformydefitem
3条回答

我已经修改了你的代码。您应该检查您的dict是否包含所需的密钥(我已经在代码中的相关部分添加了注释。请参见下文)

代码:

def allicate(a_dict):
    ans_dict = {}
    for key, item in a_dict.items():
        if item in ans_dict:  # If key exists in your dict.
            ans_dict[item].append(key)  # Append the element to the list.
            continue  # Get next element.
        ans_dict[item] = [key]  # Create a new key if it doesn't exist in you dict.
    return ans_dict


my_dict = {"name.txt": "Ram", "teach.txt": "Shyam", "cod.txt": "Ram"}

print(allicate(my_dict))

输出:

>>> python3 test.py
{'Ram': ['name.txt', 'cod.txt'], 'Shyam': ['teach.txt']}

试试这个:

from collections import defaultdict

def allicate(a_dict):
    ans_dict = defaultdict(list)
    for key,item in a_dict.items():
        ans_dict[item].append(key)
    return ans_dict
def allicate(a_dict):
    ans_dict = {}
    for key, value in a_dict.items():
        if value in ans_dict:
            ans_dict[value].append(key)
        else:
            ans_dict.update({value:[key]})
    return ans_dict

相关问题 更多 >