Python 字典更新方法
我有一个字符串标签的列表。
我想用这个标签字符串作为字典的键,而把数组的索引作为值来初始化一个字典。
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() 方法是用来用另一个字典更新一个字典的,而不是用来改变单个的键/值对。