提问人:freshWoWer 提问时间:10/6/2008 最后编辑:Serafina BrociousfreshWoWer 更新时间:11/13/2012 访问量:47403
Python 字典更新方法
python dictionary update method
问:
我有一个列表字符串标签。
我正在尝试初始化一个字典,将键作为标签字符串,将值作为数组索引。
for i, ithTag in enumerate(tag):
tagDict.update(ithTag=i)
上面返回我 {'ithTag': 608} 608 是第 608 个索引
我的问题是,当 i 被解释为变量时,Python 将“ithTag”视为字符串而不是变量。
我很困惑,很难在谷歌上搜索这些具体问题。我希望我正确地表达了这个问题的标题,
谢谢!
答:
46赞
Jerub
10/6/2008
#1
您实际上想这样做:
for i, tag in enumerate(tag):
tagDict[tag] = i
.update() 方法用于使用另一个字典更新字典,而不是用于更改单个键/值对。
2赞
mbesso
10/6/2008
#2
我认为这是你想做的:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
2赞
Vinko Vrsalovic
10/6/2008
#3
尝试
tagDict[ithTag] = i
18赞
Claudiu
10/6/2008
#4
如果你想变得聪明:
tagDict.update(map(reversed, enumerate(tag)))
感谢 Brian 的更新。这显然比迭代版本快 ~5%。
(编辑:感谢 saverio 指出我的答案不正确(现已修复)。可能最有效/Pythonic 的方式是 Torsten Marek 的回答,稍作修改:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
评论
1赞
Brian
10/6/2008
实际上,update() 可以直接接受序列,因此无需构造中间字典。 执行 tagDict.update(enumerate(tag)) 实际上比迭代版本略快 (~5%)。
2赞
rewritten
2/11/2011
的键必须是 的元素。使用,实际上是 Torsten Marek 的答案的功能等价物。tagDict
tag
tagDict.update(map(reversed, enumerate(tag)))
0赞
warvariuc
12/16/2011
@Claudiu,因为正如 saverio 已经提到的,将索引作为字典键,而它们必须是值tagDict.update(enumerate(tag))
12赞
Torsten Marek
10/7/2008
#5
这是一句话:
tagDict = dict((t, i) for i, t in enumerate(tag))
评论
0赞
Hamish Grubijan
11/21/2012
我认为这应该是公认的答案——这里发生的事情更清楚,无需担心副作用。
2赞
Vanuan
11/13/2012
#6
我想你想要的是这个:
for i, ithTag in enumerate(tag):
tagDict.update({ithTag: i})
评论