Работа с sys.stdin
имеется вот такой код Python 3.
import sys
data = sys.stdin.readlines()
d = {}
for _ in data:
actor = _.split(" - ")[0]
action = _.split(" - ")[1]
if actor in d:
d[actor] = d[actor] + action
else:
d[actor] = action
for i in d:
print(i, ":", end="")
for ii in d[i]:
print(" ", ii, end="")
print()
Для ввода
aa - f
aa - s
bb - h
Вывод должен составлять
aa : f s
bb : h
А составляет он вместо этого
aa : f
s
bb : h
Собственно, вопрос - почему? Я подозреваю, что где-то затесались лишние переходы на новую строку. Но что с ними делать?
Ответы (1 шт):
Автор решения: nomnoms12
Полный оптимизированный пример:
→ Ссылка
Лишние переводы затесались в data. Убрать можно с помощью метода строк rstrip.
Пример:
data = ['aa - f\n', 'aa - s\n', 'bb - h']
data = list(map(str.rstrip, data))
print(data)
stdout:
['aa - f', 'aa - s', 'bb - h']
Полный оптимизированный пример:
data = ['aa - f\n', 'aa - s\n', 'bb - h']
data = list(map(str.rstrip, data))
d = {}
for s in data:
actor, action = s.split(" - ")
d[actor] = d.get(actor, '') + action
for x in d:
print(x, ':', *d[x])
stdout:
aa : f s
bb : h