Получить общее количество из списка

Я читаю в пунктах:

for line in sys.stdin: line = line.strip() data = line.split("-") 

Если я печатаю data мере их чтения, это выглядит так:

  • Элегантный формат для MAC-адреса в Python 3.2
  • распаковать первые два элемента в списке / кортеже
  • Добавить в список против Increment
  • Тестирование ввода пользователя со списком в python
  • Зачем вам явно нужно использовать аргумент «self» в методе Python?
  • Коды ошибок Python
  •  ['Adam', '5'] ['Peter', '7'] ['Adam', '8'] ['Lucy', '2'] ['Peter', '4'] 

    Как я могу получить общее количество для каждого уникального имени, таким образом, мой новый список будет выглядеть так:

     ['Adam', '13'], ['Peter', '11'], ['Lucy', '2'] 

  • Разрывает транзакции ndb.toplevel?
  • Как преобразовать строку, которая уже выглядит как список в список?
  • «Функция ________ при 0x01D57aF0» возвращает в python
  • Python Отправить форму и получить ответ
  • Как определить регион, страну и континент на основе города с помощью Python?
  • Python, многократная печать,
  • 4 Solutions collect form web for “Получить общее количество из списка”

    Используйте collections.Counter() для подсчета вхождений:

     import collections lines = [['Adam', '5'], ['Peter', '7'], ['Adam', '8'], ['Lucy', '2'], ['Peter', '4']] counter = collections.Counter() for data in lines: counter[data[0]] += int(data[1]) print(counter) 

    Ты получишь:

     Counter({'Adam': 13, 'Peter': 11, 'Lucy': 2}) 

    Инициализируйте defaultdict с типом int и используйте имя в качестве ключа

     from collections import defaultdict name_list = defaultdict(int) for line in sys.stdin: line = line.strip() data = line.split("-") name = data[0] value = int(data[1]) name_list[name] += value for key, value in name_list.items(): print key, value 

    Я рекомендую создать диктатор и обновить его, когда вы идете. Я предположил, что ваш формат данных для данных – это список списков.

     finalList = {} for name, value in data: if name in finalList.keys(): finalList[name] = finalList[name] + int(value) else: finalList[name] = int(value) print(finalList) 

    Пандас очень хорошо справляется с такими ситуациями

     import pandas as pd df_data=pd.read_csv(filepath_or_buffer=path,sep='_',names =['Name','value']) df=df_data.groupby(['Name'])['value'].sum() print df 

    вывод

     'Adam' 13 'Lucy' 2 'Peter' 11 

    Входной файл

     Adam_5 Peter_7 Adam_8 Lucy_2 Peter_4 
    Python - лучший язык программирования в мире.