Небольшой совет по оптимизации и удобочитаемости: по возможности избегайте выбора индекса.
Если вы выполняете итерации как по индексу, так и по значению итерируемого, избегайте использования range (len (x)) и напрямую используйте enumerate
, это намного быстрее в python и более читабельно.
Улучшение @ ответа Балдермана:
reader = [['1','2','3'],['11','22','33'],['111','222','333']]
csv_rows = []
title = ['T1','T2','T3']
for row in reader:
csv_rows.extend([{val: row[idx] for idx, val in enumerate(title)}])
print(csv_rows)
Еще лучше и яснее избегать использования индексов вообще:
reader = [['1','2','3'],['11','22','33'],['111','222','333']]
csv_rows = []
title = ['T1','T2','T3']
for row in reader:
csv_rows.extend([ {t_val: r_val for (t_val, r_val) in zip(title, row)} ])
print(csv_rows)
Еще более компактно (и быстрее):
reader = [['1','2','3'],['11','22','33'],['111','222','333']]
title = ['T1','T2','T3']
csv_rows = [{t_val: r_val for (t_val, r_val) in zip(title, row)} for row in reader]
print(csv_rows)
Список и диктовки немного сложны в начале, но если вы думаете о них как о «циклах с положением после», они не такие странные.