словарь Python обновляет метод

Функция: read_line() возвращает новый номер строки. Но функция main() игнорирует возвращаемое значение, поэтому не обновляет локальную переменную row_num, поэтому кодовый блок, начинающийся с:

while (row_num > 0)

, никогда не будет выполнен

вторым параметром до read_line() не нужно. Этот параметр может быть просто локальной функцией в функции, а не параметром

18
задан Cody Brocious 6 October 2008 в 06:11
поделиться

5 ответов

Вы на самом деле хотите сделать это:

for i, tag in enumerate(tag):
    tagDict[tag] = i

.update () метод используется для обновления словаря с помощью другого словаря, не для изменения единственной пары ключ/значение.

46
ответ дан 30 November 2019 в 05:42
поделиться

Если Вы хотите быть умными:

tagDict.update(map(reversed, enumerate(tag)))

Благодаря Brian для обновления. Это, по-видимому, на ~5% быстрее, чем повторяющаяся версия.

(РЕДАКТИРОВАНИЕ: Благодарен за то, что saverio указывает, что мой ответ был неправильным (теперь зафиксированный). Вероятно, большей частью efficient/Pythonic пути был бы ответ Torsten Marek, немного измененный:

tagDict.update((t, i) for (i,t) in enumerate(tag))

)

17
ответ дан 30 November 2019 в 05:42
поделиться

Я думаю, что это - то, что Вы хотите сделать:

d = {}
for i, tag in enumerate(ithTag):
   d[tag] = i
2
ответ дан 30 November 2019 в 05:42
поделиться

Это - острота:

tagDict = dict((t, i) for i, t in enumerate(tag))
12
ответ дан 30 November 2019 в 05:42
поделиться

Попробуйте

tagDict[ithTag] = i
2
ответ дан 30 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: