Избегайте использования eval.
Я бы предпочел трактовать его как JSON, если вы можете гарантировать, что форматирование будет таким, как указано выше.
import json
from collections import Counter
with open('fruits.txt') as f:
counts = Counter()
for line in f.readlines():
counts.update(json.loads(line.replace("'", '"')))
Если вы хотите вывод, как определено выше:
for fruit, count in counts.items():
print(f"{fruit}:{count}")
Обновленный ответ
Основано на предложении @ DarryIG literal_eval в комментариях, отрицает JSON use.
from ast import literal_eval
from collections import Counter
with open('fruits.txt') as f:
counts = Counter()
for line in f.readlines():
counts.update(literal_eval(line))