Ответ 1
Вы действительно хотите это сделать:
for i, tag in enumerate(tag):
tagDict[tag] = i
Метод .update() используется для обновления словаря с использованием другого словаря, а не для изменения одной пары ключ/значение.
У меня есть тег строки списка.
Я пытаюсь инициализировать словарь с ключом как строку тега и значения как индекс массива.
for i, ithTag in enumerate(tag):
tagDict.update(ithTag=i)
Приведенное выше возвращает меня {'ithTag': 608} 608 - это 608-й индекс
Моя проблема в том, что, когда я интерпретируется как переменная, Python обрабатывает "ithTag" как строку вместо переменной.
Я в замешательстве, мне сложно задавать такие конкретные вопросы. Надеюсь, я правильно сформулировал название этого вопроса,
Спасибо!
Вы действительно хотите это сделать:
for i, tag in enumerate(tag):
tagDict[tag] = i
Метод .update() используется для обновления словаря с использованием другого словаря, а не для изменения одной пары ключ/значение.
Если вы хотите быть умным:
tagDict.update(map(reversed, enumerate(tag)))
Спасибо Брайану за обновление. Это, по-видимому, на 5% быстрее, чем итеративная версия.
(EDIT: Спасибо, что saverio за то, что мой ответ был неправильным (теперь исправлено). Вероятно, самым эффективным/путинским способом будет ответ Torsten Marek, слегка измененный:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
Это однострочный:
tagDict = dict((t, i) for i, t in enumerate(tag))
Я думаю, что это то, что вы хотите сделать:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
Try
tagDict[ithTag] = i
Я думаю, что вы хотите:
for i, ithTag in enumerate(tag):
tagDict.update({ithTag: i})