Ask*_*nto 27 python dictionary loops python-2.7
我有一个OrderedDict,在循环中我想得到索引,键和值.这肯定可以通过多种方式完成,即
a = collections.OrderedDict({…})
for i,b,c in zip(range(len(a)), a.iterkeys(), a.itervalues()):
…
Run Code Online (Sandbox Code Playgroud)
但我想避免范围(len(a))并将a.iterkeys(),a.itervalues()缩短为类似a.iteritems()的东西.使用枚举和iteritems,可以将其改写为
for i,d in enumerate(a.iteritems()):
b,c = d
Run Code Online (Sandbox Code Playgroud)
但它需要在循环体内解包.有没有办法解析for语句或者更优雅的迭代方式?
fal*_*tru 53
您可以在for语句中使用元组解包:
for i, (key, value) in enumerate(a.iteritems()):
# Do something with i, key, value
Run Code Online (Sandbox Code Playgroud)
>>> d = {'a': 'b'}
>>> for i, (key, value) in enumerate(d.iteritems()):
... print i, key, value
...
0 a b
Run Code Online (Sandbox Code Playgroud)
边注:
在Python 3.x中,使用dict.items()返回可迭代的字典视图.
>>> for i, (key, value) in enumerate(d.items()):
... print(i, key, value)
Run Code Online (Sandbox Code Playgroud)