python - 如何通过函数将字典中的多个键与一个值配对?

标签 python function dictionary

我遇到以下问题,但我不知道该怎么办。有人可以帮忙吗???

“您正在举办一个聚会,并希望将具有相似兴趣的人配对。 您已经收集了每位客人最感兴趣的数据 像这样的字典:

interests = { 'Sophia' : 'Computer', 'Anders' : 'Dancing', 'Mette' : 'Dancing', 'Hikari' : 'Computer', 'Riko' : 'Rowing', 'Troels' : 'Rowing', 'Sarah' : 'Rowing' }

为了能够在聚会上快速建议主题,您需要将其转换为 字典转换为不同的布局。

你的任务是编写一个以参数为参数的函数transform_dictionary 一个字典,例如上面的字典,并返回一个字典,其中 每个键都是一个兴趣,值是所有共享此兴趣的人的列表 兴趣。 例如,对于上面的列表,返回的字典是 (忽略元素的特定顺序)

我需要打印:

{'Computer': ['Sophia', 'Hikari'], 'Dancing': ['Anders', 'Mette'], 'Rowing': ['Riko', 'Troels', 'Sarah']}

这是我到目前为止所拥有的:

    interests = {
        'Sophia' : 'Computer',
        'Anders' : 'Dancing',
        'Mette' : 'Dancing', 
        'Hikari' : 'Computer',
        'Riko' : 'Rowing', 
        'Troels' : 'Rowing',
        'Sarah' : 'Rowing'
    }
    
    # comvert dictionary into a different layout.
    
    def transform_dictionary(interests):
        new_dict = {}
        key_list = []
        
        for k, v in new_dict:
            if value in new_dict:
            new_dict[value] = k
        return {}
        
    
    print(transform_dictionary(interests)) 

最佳答案

您可以使用collections.defaultdict(list)然后只使用 append 如下所示:

from collections import defaultdict
dct = defaultdict(list)

for k,v in interests.items():
    dct[v].append(k)

输出:

{'Computer': ['Sophia', 'Hikari'],
 'Dancing': ['Anders', 'Mette'],
 'Rowing': ['Riko', 'Troels', 'Sarah']}

关于python - 如何通过函数将字典中的多个键与一个值配对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69555219/

相关文章:

android - 模拟 Android VM 的 SIM 卡功能

bash - 如何在 bash 脚本中使用 bash 配置文件中定义的函数?

excel - Excel中的工资计算

Java:如何检查生成的关卡是否可行?

python - 将具有太多值的行转换为列

python - 使用 groupby() 根据条件对实例进行计数

python - 将列表 append 到列表以创建列表列表会在想要使用列表列表的索引 : python 更改值时出现问题

python - 网络上的PyAudio崩溃

python - 将具有相同键字符串的多个字典键值相加

dictionary - 如何(不安全地)将 map 反射(reflect)为约束?