Python:如何获取具有相同值的键?
从例子来看,我有Python:如何获取具有相同值的键?,python,python-3.x,Python,Python 3.x,从例子来看,我有 [('Han Decane','12333'),('Can Decane','12333'),('Al Right','10110')] 输出应该是 ['Han Decane','Can Decane'] 如何获取它?如果您希望它适用于任意密钥,可以使用OrderedDict的默认dict from collections import defaultdict, OrderedDict result_dict = defaultdict(OrderedDict) data
[('Han Decane','12333'),('Can Decane','12333'),('Al Right','10110')]
输出应该是
['Han Decane','Can Decane']
如何获取它?如果您希望它适用于任意密钥,可以使用OrderedDict的默认dict
from collections import defaultdict, OrderedDict
result_dict = defaultdict(OrderedDict)
data = [('Han Decane','12333'),('Can Decane','12333'),('AlRight','10110')]
for (v,k) in data:
result_dict[k][v]=True
>>> list(result_dict['12333'].keys())
['Han Decane', 'Can Decane']
如果你想要所有有多个值的结果
>>> [k for k in result_dict if len(result_dict[k]) > 1 ]
['12333']
可以创建从值到与这些值对应的所有键的映射
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)
这将创建一个列表字典,其中键作为旧dict的值,值作为相应旧键的列表
即
map[12333]
将是
['Han Decane','Can Decane']
还有一个答案,没有那些新奇的进口货
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']
你有一个元组列表,还是一个真正的字典?如果有几组相等的值怎么办?顺序重要吗?你的字典是反序的。你的问题不清楚。您的标题指定了
键
,但您给出了一个元组列表作为示例。请编辑。我假设您希望避免重复。否则使用列表会更好。为什么使用OrderedDict?如果你想避免重复,请使用集合。否则你可能会返回['Can Decane','Han Decane']
,并且顺序可能很重要。