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

2024-05-14 22:48:03 发布

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

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

“你是在开派对,想让志趣相投的人结对。 您已经收集了每位客人最感兴趣的活动的数据 像这样的字典:

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

为了能够在聚会上快速提出主题,您需要转换此 将字典转换为不同的布局

您的任务是编写一个函数转换字典,将其作为参数 一个字典,如上面的一个,并返回一个字典,其中 每个键都是一个兴趣点,值是共享此项的所有人的列表 兴趣 例如,对于上面的列表,返回的字典是 (不考虑元素的特定顺序)

我需要打印:

{'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)) 

Tags: newdictionary字典dictcomputerdancinghikarisophia
3条回答

这项工作:

def transform_dictionary(interests):
    new_dict = {}
    for key, value in interests.items():
        if not value in new_dict:
            new_dict[value] = [key]
        else:
            new_dict[value] += [key]
    return new_dict

您可以使用^{},然后只使用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']}

你可以这样做:

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

# convert dictionary into a different layout.

def transform_dictionary(interests):
    new_dict = {}
    for v in interests.values():
        new_dict[v] = [i for i in interests if interests[i] == v]
    return new_dict
    

print(transform_dictionary(interests))

输出:

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

相关问题 更多 >

    热门问题