Подтвердить что ты не робот

Метод обновления словаря python

У меня есть тег строки списка.

Я пытаюсь инициализировать словарь с ключом как строку тега и значения как индекс массива.

for i, ithTag in enumerate(tag):
    tagDict.update(ithTag=i)

Приведенное выше возвращает меня {'ithTag': 608} 608 - это 608-й индекс

Моя проблема в том, что, когда я интерпретируется как переменная, Python обрабатывает "ithTag" как строку вместо переменной.

Я в замешательстве, мне сложно задавать такие конкретные вопросы. Надеюсь, я правильно сформулировал название этого вопроса,

Спасибо!

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Спасибо Брайану за обновление. Это, по-видимому, на 5% быстрее, чем итеративная версия.

(EDIT: Спасибо, что saverio за то, что мой ответ был неправильным (теперь исправлено). Вероятно, самым эффективным/путинским способом будет ответ Torsten Marek, слегка измененный:

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

)

Ответ 3

Это однострочный:

tagDict = dict((t, i) for i, t in enumerate(tag))

Ответ 4

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

d = {}
for i, tag in enumerate(ithTag):
   d[tag] = i

Ответ 5

Try

tagDict[ithTag] = i

Ответ 6

Я думаю, что вы хотите:

for i, ithTag in enumerate(tag):
    tagDict.update({ithTag: i})