Python:如何获得具有相同值的键?

时间:2015-12-08 23:45:08

标签: python python-3.x

从示例中,我有

[('Han Decane','12333'),('Can Decane','12333'),('Al Right','10110')]

输出应为

['Han Decane','Can Decane']

我怎么能得到它?

3 个答案:

答案 0 :(得分:2)

如果你想让它适用于任何任意键,你可以使用OrderedDicts的默认值。

>>> [k for k in result_dict if len(result_dict[k]) > 1 ]
['12333']

如果你想要所有具有多个值的结果

import os
import unittest

class TestSomething(unittest.TestCase):
    def setUp(self):
        self.username = os.environ.get('API_USERNAME', None)
        self.password = os.environ.get('API_PASSWORD', None)

    def test_real_api(self):
        if self.username is None or self.password is None:
            raise Exception('API credentials required for this test!')

答案 1 :(得分:0)

您可以创建从值到与这些值对应的所有键的地图

from collections import defaultdict
a = {'Han Decane':12333,'Can Decane':12333,'Al Right':10110}
map = defaultdict(list)
for i, j in map.iteritems():
    map[j].append(i)

这将创建一个列表字典,其中键作为旧字典的值,值作为相应旧键的列表。

即。

map[12333]

将是

['Han Decane','Can Decane']

答案 2 :(得分:0)

另一个答案没有那些花哨的导入内容

data = [('Han Decane','12333'),('Can Decane','12333'),('AlRight','10110')]
result_dict = {}
for (v,k) in data: 
    if k not in result_dict:
        result_dict[k] = set()
    result_dict[k].add(v)

print(result_dict) # {'10110': {'AlRight'}, '12333': {'Han Decane', 'Can Decane'}}
print(list(result_dict['12333'])) # ['Can Decane', 'Han Decane']