我在Python中有一个字典,如下所示:
D = {1:'a', 5:'b', 2:'a', 7:'a'}
键的值大多无关紧要。有没有办法按数字顺序按键遍历字典?键都是整数。
而不是说
for key in D:
# some code...
我可以按照1, 2, 5, 7
的顺序浏览字典键吗?
此外,我无法使用排序/排序功能。
答案 0 :(得分:41)
您可以使用:
for key in sorted(D.iterkeys()):
.. code ..
在Python 3.x中,使用D.keys()
(与Python 2.x中的D.iterkeys()
相同)。
答案 1 :(得分:7)
考虑到你不想排序的规定,并假设键都是整数,你可以简单地找到键的最大值和最小值,然后迭代该范围并检查每个键是否实际在字典。
for key in xrange(min(D), max(D) + 1):
if key in D:
print D[key]
当然,这不是很有效,但它将工作,并且它避免了排序。
答案 2 :(得分:6)
假设按键/值按顺序插入,您可以使用OrderedDict:
>>> from collections import OrderedDict
>>> d = OrderedDict()
>>> d[1] = 'a'
>>> d[2] = 'a'
>>> d[5] = 'b'
>>> d[7] = 'a'
>>> d
OrderedDict([(1, 'a'), (2, 'a'), (5, 'b'), (7, 'a')])
>>> d.keys()
[1, 2, 5, 7]
答案 3 :(得分:2)
您可以使用dict.keys()
获取密钥列表,然后遍历列表的已排序视图:
for key in sorted(D.keys()):
print key, D[key]