从示例中,我有
[('Han Decane','12333'),('Can Decane','12333'),('Al Right','10110')]
输出应为
['Han Decane','Can Decane']
我怎么能得到它?
答案 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']