Мы могли бы использовать itertools.groupby здесь и путем создания списка , который содержит словарей каждой строки
from itertools import groupby
with open('text.txt') as f:
content = [line.strip('\n ') for line in f]
content = [i.split(',') for i in content]
lista = []
for i in content:
lista.append(dict([j.split('=') for j in i]))
total_eggs= sum([int(k) for k, g in groupby(lista, key=lambda x: x['eggs'])])
print(lista)
# [{'eggs': '2', ' bread': '1', ' milk': '4'}, {'eggs': '5', ' bread': '2', ' milk': '2'}, {'eggs': '1', ' bread': '3', ' milk': '3'}]
print(total_eggs)
# 8
Другой методздесь можно было бы использовать defaultdict , чтобы настроить некоторые словари, которые будут организованно хранить информацию из текстового файла, где вы сможете получить к ней доступ и что вам будет легче манипулировать в будущем
from collections import defaultdict
with open('text.txt') as f:
content = [line.strip('\n ') for line in f]
dd = defaultdict()
content = [i.split(',') for i in content]
for i, v in enumerate(content):
dd[i] = dict([j.split('=') for j in v])
print(dd)
# {0: {'eggs': '2', ' bread': '1', ' milk': '4'}, 1: {'eggs': '5', ' bread': '2', ' milk': '2'}, 2: {'eggs': '1', ' bread': '3', ' milk': '3'}})
print(sum([int(dd[k]['eggs']) for k in dd]))
# 8
Работаметод с keys
без значения:
with open('text.txt') as f:
content = [line.strip('\n ') for line in f]
content = [i.split(',') for i in content]
lista = []
for i in content:
for j in i:
if len(j.split('=')) > 1:
lista.append({j.split('=')[0]: j.split('=')[1]})
else:
lista.append({j: 0})
total_eggs = sum([int(v) for i in lista for k, v in i.items() if 'eggs' in k])