У меня есть сгенерированный файл с тысячами строк, например:
CODE,XXX,DATE,20101201,TIME,070400,CONDITION_CODES,LTXT,PRICE,999.0000,QUANTITY,100,TSN,1510000001
В некоторых строках есть больше полей, а у других - меньше, но все они соответствуют одному и тому же шаблону пар ключ-значение, и каждая строка имеет поле TSN.
При выполнении некоторого анализа файла я написал следующий цикл, чтобы прочитать файл в словаре:
#!/usr/bin/env python
from sys import argv
records = {}
for line in open(argv[1]):
fields = line.strip().split(',')
record = dict(zip(fields[::2], fields[1::2]))
records[record['TSN']] = record
print 'Found %d records in the file.' % len(records)
... это нормально и делает именно то, что я хочу (print
- просто тривиальный пример).
Однако для меня это не особенно "pythonic", а строка:
dict(zip(fields[::2], fields[1::2]))
Что просто чувствует "неуклюжим" (сколько раз он перебирает поля?).
Есть ли лучший способ сделать это в Python 2.6 с помощью стандартных модулей?