Попытка добавить элементы в список списков кортежей
Я делаю приложение для подбора игр и застрял на попытке получить сводку баллов для пользователей. Список состоит из 18 списков (недель) со всеми пользователями и их соответствующими очками, отсортированными по алфавиту. Я не знаю, как создать список с пользователями---> все очки вместе взятые.
Вот пример только с 2 пользователями
[[('user1', 25), ('user2 ', 18)], [('user1', 18), ('user2 ', 25)], [('user1', 18), ('user2 ', 25)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)]]
Это решение должно работать:
data = your_list
out = {}
for week in data:
for user in week:
if user[0] in out.keys():
out[user[0]] += user[1]
else:
out[user[0]] = user[1]
print(out) # Just in case you want to try
Вот что я бы предложил:
from collections import Counter
data = [[('user1', 25), ('user2 ', 18)], [('user1', 18), ('user2 ', 25)], [('user1', 18), ('user2 ', 25)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)], [('user1', 0), ('user2 ', 0)]]
user_points = Counter()
for week in data:
for user, points in week:
user_points[user] += points
print(user_points) # Counter({'user2 ': 68, 'user1': 61})
Вы можете сделать это с помощью zip
и dict comprehensions
d = {x[0][0]: sum(list(zip(*x))[1]) for x in zip(*lst)}
print(d) # {'user1': 61, 'user2 ': 68}