Из примера, у меня естьPython: как получить ключи с одинаковыми значениями?
[('Han Decane','12333'),('Can Decane','12333'),('Al Right','10110')]
выход должен быть
['Han Decane','Can Decane']
, как я могу это получить?
Из примера, у меня естьPython: как получить ключи с одинаковыми значениями?
[('Han Decane','12333'),('Can Decane','12333'),('Al Right','10110')]
выход должен быть
['Han Decane','Can Decane']
, как я могу это получить?
Если вы хотите, чтобы работать для любого произвольного ключа (ов) вы можете использовать defaultdict из OrderedDicts ..
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']
Я предполагаю, что вы хотите избежать дубликатов здесь. В противном случае использование списка будет лучше. –
Почему заказ? И если вы хотите избежать дубликатов, используйте набор. –
Потому что в противном случае вы можете вернуться '['Can Decane', 'Han Decane']' и порядок может быть важен. –
вы можете создать карту из значений всех ключей, соответствующих тем значениям
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, а значения - как список соответствующих старых ключей.
ie.
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']
У вас есть список кортежей, или фактический словарь? – senshin
Что делать, если есть несколько групп равных значений? – fjarri
Имеет ли значение порядок? –