当前位置: 首页 > 面试题库 >

如何反转具有重复值的字典

孟彦
2023-03-14
问题内容

我有一本将近100,000个(键,值)对的字典,大多数键都映射到相同的值。例如:

mydict =  {'a': 1, 'c': 2, 'b': 1, 'e': 2, 'd': 3, 'h': 1, 'j': 3}

我想要做的是反转字典,以便in中的每个值mydict都将成为的键,reverse_dict并且将映射到所有mydict.keys()用于映射到in中的值的列表mydict。因此,根据以上示例,我将得到:

reversed_dict = {1: ['a', 'b', 'h'], 2: ['c', 'e'] , 3: ['d', 'j']}

我想出了一个非常昂贵的解决方案,并且我想听听比这更有效的方法的想法:

reversed_dict = {}
for value in mydict.values():
    reversed_dict[value] = []
    for key in mydict.keys():
        if mydict[key] == value:
            if key not in reversed_dict[value]: 
                reversed_dict[value].append(key)

问题答案:

使用collections.defaultdict

from collections import defaultdict

reversed_dict = defaultdict(list)
for key, value in mydict.items():
    reversed_dict[value].append(key)


 类似资料:
  • 我有一个哈希图,其中一些键指向相同的值。我想找到所有相等的值并打印相应的键。 这是我拥有的当前代码: 当前代码将重复项两次添加到列表中,但它也将每个键添加一次。 谢谢。

  • 问题内容: 我必须清理具有重复行的表: 一个可能具有多个值: 我想对整个表执行一个查询,并删除和重复的所有行。在上面的示例中,删除后,我只想剩下1、2、4和5。 问题答案: ;WITH x AS ( SELECT id, gid, url, rn = ROW_NUMBER() OVER (PARTITION BY gid, url ORDER BY id) FROM dbo.table ) SEL

  • 问题内容: 假设我们在Django中有一个定义如下的模型: 名称字段不是唯一的,因此可以具有重复的值。我需要完成以下任务:从模型中选择具有至少一个name字段重复值的所有行。 我知道如何使用普通的SQL来做到这一点(可能不是最好的解决方案): 因此,可以使用django ORM选择它吗?还是更好的SQL解决方案? 问题答案: 尝试: 这与使用Django所获得的效果非常接近。问题在于这将返回一个w

  • 假设我有一个具有100个值的枚举。为了简单起见,请举以下示例: 我想创建一个公共方法来将具有已知格式的字符串(如"string1","string2"…)转换为适当的枚举值CODE_1,CODE_2…通常这是通过遍历所有值来完成的,如果找到匹配项,则返回该枚举值。(详细信息可以在这个问题中找到。) 但是,我关心的是对所有值的正则化循环。这可能是一个巨大的瓶颈吗?如果不是100个元素,而是1000个

  • 可能重复: 如何在Python中检查字符串是否为数字 Python-将字符串解析为Float或Int 例如,我想检查一个字符串,如果它不能转换为整数(使用),我如何检测它?

  • 本文向大家介绍如何在R中创建具有重复值的向量?,包括了如何在R中创建具有重复值的向量?的使用技巧和注意事项,需要的朋友参考一下 有两种方法可以创建一个在R中具有重复值的向量,但是两种方法都有不同的方法,第一种方法是重复向量的每个元素,第二种方法将元素重复指定的次数。这两种方法都使用rep函数来创建向量。 示例 请看以下示例-