Функция: read_line()
возвращает новый номер строки. Но функция main()
игнорирует возвращаемое значение, поэтому не обновляет локальную переменную row_num
, поэтому кодовый блок, начинающийся с:
while (row_num > 0)
, никогда не будет выполнен
вторым параметром до read_line()
не нужно. Этот параметр может быть просто локальной функцией в функции, а не параметром
Вы на самом деле хотите сделать это:
for i, tag in enumerate(tag):
tagDict[tag] = i
.update () метод используется для обновления словаря с помощью другого словаря, не для изменения единственной пары ключ/значение.
Если Вы хотите быть умными:
tagDict.update(map(reversed, enumerate(tag)))
Благодаря Brian для обновления. Это, по-видимому, на ~5% быстрее, чем повторяющаяся версия.
(РЕДАКТИРОВАНИЕ: Благодарен за то, что saverio указывает, что мой ответ был неправильным (теперь зафиксированный). Вероятно, большей частью efficient/Pythonic пути был бы ответ Torsten Marek, немного измененный:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
Я думаю, что это - то, что Вы хотите сделать:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
Это - острота:
tagDict = dict((t, i) for i, t in enumerate(tag))