Более быстрый и более питонический способ - использовать модуль csv
(запятые по умолчанию разделены) и разбивать элементы в генераторе с двойным уплощением, передаваемом в dict
, который принимает кортежи с 2 элементами:
import csv
with open("test.csv",newline="") as f: # replace ,newline="" by ,"rb" in python 2
cr = csv.reader(f)
d = dict(x.split(":") for row in cr for x in row)
print(d)
результат:
{'key1': 'value1', 'key22': 'value22', 'key21': 'value21', 'key2': 'value2'}
версия не в формате csv:
import csv
with open("test.csv") as f:
d = dict(x.split(":") for line in f for x in line.split(","))