#python #list #tuples
#python #Список #кортежи
Вопрос:
У меня есть n списков кортежей, которые и должны генерировать список конечных кортежей, добавляя значения одних и тех же ключевых слов.
каждый список кортежей имеет такую форму:
[('a1', 10), ('a2', 50), ('a3',5)]
[('s1', 10), ('a3', 50), ('s2',5)]
и я должен сгенерировать список кортежей следующим образом
[('a1',10),('a2',50), ('a3',55), ('s1',10), ('s2',5)]
затем я должен упорядочить его в порядке убывания и чаще извлекать элементы x
следующим образом
[('a3',55), ('a2',50), ('a1',10), ('s1',10), ('s2',5)] #order list in descending order
# extract the 3 most frequently
[('a3',55), ('a2',50), ('a1',10)]
как я могу это сделать?
Спасибо
Комментарии:
1. Используйте
Counter
.
Ответ №1:
from collections import Counter
lists = [
[('a1', 10), ('a2', 50), ('a3',5)],
[('s1', 10), ('a3', 50), ('s2',5)]
]
counter = sum(map(lambda l: Counter(dict(l)), lists), Counter())
print(counter.most_common(3))
Вывод:
[('a3', 55), ('a2', 50), ('a1', 10)]
>>>