Модуль csv
здесь может быть очень удобен, просто используйте точку с запятой в качестве разделителя, и вам будет достаточно простого понимания:
with open('filename.txt') as file:
reader = csv.reader(file, delimiter=';')
votep = {k: vals for k, *vals in reader}
print(votep)
Без использования csv
вы можете просто использовать str.split
:
with open('filename.txt') as file:
votep = {k: vals for k, *vals in (s.split(';') for s in file)}
print(votep)
Дальнейшее упрощение без понимания это выглядело бы следующим образом:
votep = {}
for line in file:
key, *vals = line.split(';')
votep[key] = vals
И, к вашему сведению, key, *vals = line.strip(';')
- это просто присвоение нескольких переменных в сочетании с повторяемой распаковкой. Звезда означает только то, что все, что осталось в итерируемом элементе, заносится в значения после присвоения первому значению ключа.