python:识别不同字典键中的重复值

时间:2010-05-19 19:30:43

标签: dictionary python-3.x

这是dict的一个例子

ActivePython 3.1.2.3 (ActiveState Software Inc.) based on
Python 3.1.2 (r312:79147, Mar 22 2010, 12:20:29) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dict = {}
>>> dict[("127.0.0.1", "127.0.0.2")] = ["value", "value2", "value3"]
>>> dict[("127.0.0.1", "127.0.0.3")] = ["value", "value2", "value3"]
>>> dict[("127.0.0.1", "127.0.0.4")] = ["value1", "value2", "value3"]

有没有人知道一种干净,健壮的方法来返回一个字典键列表,它的值是相同的,无论值类型如何?

在上面的示例中,前两个条目具有不同的键但值相同。我正在寻找一种 clean 方式来获取这两个密钥的列表。

1 个答案:

答案 0 :(得分:3)

将列表转换为元组。

根据帖子中的示例countMap,在删除之前(如果它仍然与您相关):

countMap = {}
for k, v in dict.items():
    v = tuple(v)
    countMap[v] = countMap.get(v,0) + 1

但是,请不要调用你的变量dict,因为这是python类型的名称。

其他解决方案:

index = {}
for k, v in dict.items():
    v = tuple(v)
    index[v] = index.get(v, []) + [k]

或使用defaultdict清洁:

from collections import defaultdict

index = defaultdict(list)
for k, v in dict.items():
    index[tuple(v)].append(k)