объединить список кортежей со значениями суммы в Python

#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)]
>>>