Python 字典更新方法

18 投票
6 回答
47460 浏览
提问于 2025-04-11 09:24

我有一个字符串标签的列表。

我想用这个标签字符串作为字典的键,而把数组的索引作为值来初始化一个字典。

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

这样做的结果是 {'ithTag': 608} 608 是第608个索引

我的问题是,虽然 i 被当作变量来处理,但 Python 把 "ithTag" 当成了一个字符串,而不是变量。

我有点困惑,这种具体的问题在网上搜索起来有点难。我希望我标题的表述是正确的,

谢谢!

6 个回答

12

这是一行代码:

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

如果你想聪明一点:

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

感谢Brian的更新。这个方法显然比循环版本快大约5%。

(编辑:感谢saverio指出我之前的回答不正确(现在已经修正)。可能最有效、最符合Python风格的方法是Torsten Marek的回答,稍微修改了一下:

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

)

46

你其实想要这样做:

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

.update() 方法是用来用另一个字典更新一个字典的,而不是用来改变单个的键/值对。

撰写回答