Это должно быть довольно просто, и я потратил на это несколько часов.
Пример данных (имя, двоичный код, количество):
Adam 0 1
Adam 1 1
Adam 0 1
Mike 1 1
Mike 0 1
Mike 1 1
Требуемый пример Выход (имя, двоичный код, количество):
Adam 0 2
Adam 1 1
Mike 0 1
Mike 1 2
Каждое имя должно иметьего собственный двоичный ключ 0 или 1. На основе двоичного ключа, суммируйте столбец count.Обратите внимание на «уменьшение» в желаемом выходе.
Я предоставил часть своего кода и пытаюсь обойтись без списков или словаря в редукторе.
"" "Редуктор принимает имена со своими двоичными и частичнымиcount добавляет их до
Ввод: имя \ t двоичный файл \ t pCount
Выход: имя \ t бинарный \ t tCount
"" "
import re
import sys
current_name = None
zero_count, one_count = 0,0
for line in sys.stdin:
# parse the input
name, binary, count = line.split('\t')
if name == current_name:
if int(binary) == 0:
zero_count += int(count)
elif int(binary) == 1:
one_count += int(count)
else:
if current_name:
print(f'{current_name}\t{0} \t{zero_count}')
print(f'{current_name}\t{1} \t{one_count}')
current_name, binary, count = word, int(binary), int(count)
print(f'{current_name}\t{1} \t{count}')
Дляпо какой-то причине, он не печатает должным образом.(первое имя, которое проходит через это фанки) Я также не уверен, что лучший способ пройти через все печати для one_count и zero_count, который также отображает свои двоичные метки.
Любая помощь будет принята с благодарностью.Спасибо!