Python выводит общий результат из файла, печатая каждое имя только один раз? - PullRequest
0 голосов
/ 15 ноября 2018

Привет. Я пытаюсь распечатать некоторую информацию из файла, чтобы получить имена людей, которые будут отображаться только один раз, и все номера людей будут добавлены вместе.

Информация из файла выглядит примерно так: randomfile.txt

Jack, 20.00
Sofie, 12.00 
Jack, 32.50
Sofie, 33.75

Вывод, который я хочу:

Jack   52.50
Sofie  45.75

Я знаю, как получить всю информацию, но я не знаю, как добавить информацию, чтобы печатать ее, не печатая имена несколько раз.

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Вот простой способ сделать это.

s = '''Jack, 20.00
Sofie, 12.00 
Jack, 32.50
Sofie, 33.75'''


final_dict = {}
for line in s.split('\n'):
    name = line.split(',')[0].strip()
    score = line.split(',')[1].strip()
    if name in final_dict.keys():
        final_dict[name] = float(final_dict[name]) + float(score)
    else:
        final_dict[name] = float(score)

for k, v in final_dict.items():
    print(k,'',v)

Выходы:

Jack  52.5
Sofie  45.75
0 голосов
/ 15 ноября 2018

Я оставлю это здесь просто для удовольствия:

awk '{p[$1] += $2} END {for (k in p) print k" "p[k]}' randompeople.txt
0 голосов
/ 15 ноября 2018

Простой подход.

scores = {}
for line in txtfile:
    name, score = line.split(",")
    if name in scores:
         scores[name] += score
    else:
         scores[name] = score
for k,v in scores.items():
   print(k,v)

У тебя еще есть кое-какие настройки ... Я оставлю их тебе

...