#python #set
Вопрос:
У меня есть список с наборами, который соответствует приведенной ниже структуре. Я хотел бы суммировать все числовые элементы набора и агрегировать по цвету.
# Declare a list of sets
colors = [{"red", 1, 2},
{"red", 2, 4},
{"blue", 1, 2},
{"blue", 1}]
# Iterate over each set in the list
for i in colors:
for e in i:
# sum each numeric value in the set and aggregate by color
Ожидаемый результат:
верните цвет с наибольшей суммой (красный)
красный 9
Ответ №1:
Вы можете попробовать это:
from collections import defaultdict
colors = [{"red", 1, 2}, {"red", 2, 4}, {"blue", 1, 2}, {"blue", 1}]
d = defaultdict(int)
for c in colors:
tot = 0
for item in c:
if type(item) is str:
key = item
else:
tot = item
d[key] = tot
sorted(d.items(), key=lambda x: x[1], reverse=True)[0]
Это дает:
('red', 9)