Проблема с подсчетом голосов через словарь
Есть файл в котором находятся имя человека и количество набранных голосов
McCain 10
McCain 3
Alabama 19
Alabama 2
McCain 7
я пытаюсь открыть файл и добавить через цикл имя и сколько набрал человек голосов,вот что я наделал...
with open("input (1).txt","r") as f:
dict_1 = {}
for e in f.read().split():
if e.isalpha():
v = e
elif e.isdigit():
k = e
try:
dict_1.update({v:k})
print(dict_1)
except:
print(dict_1)
но что_то пошло не так :(
помогите пожалуйста
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
а чем не устраивает старый метод:
with open('input (1).txt') as f:
lines = f.readlines()
res = {}
for line in lines:
parts = line[:-1].split()
res[parts[0]] = res.get(parts[0], 0) + int(parts[1])
через line[:-1] я отрезал \n (вроде он все таки во всех линиях присутствует), однако можно его убрать все таки
и можно сделать такой код:
for line in lines:
parts = line.split()
res[parts[0]] = (0 if parts[0] not in res else res[parts[0]]) + int(parts[1])
Автор решения: Іван Шнір
→ Ссылка
Так должно всё получится.
with open("input (1).txt","r") as f:
dict_1 = {}
for e in f.read().split():
if e.isalpha():
v = e
elif e.isdigit():
k = e
try:
dict_1[k] = v
except Exception as e:
print(e)
print(dict_1)
Или же вот ваш чу-чуть поправлений:
with open("input (1).txt","r") as f:
dict_1 = {}
for e in f.read().split():
if e.isalpha():
v = e
elif e.isdigit():
k = e
try:
dict_1.update({k:v}) #Просто надо било k и v поменять местами
except:
pass
print(dict_1) # и перенести сюда вивод dict_1