我有一个 Python 字典,看起来像这样:
D = {1:'a', 5:'b', 2:'a', 7:'a'}
键的值大多无关紧要。有没有办法按数字顺序按键遍历字典?键都是整数。
而不是说
for key in D:
# some code...
我可以按顺序浏览字典键1, 2, 5, 7
吗?
此外,我不能使用排序/排序功能。
我有一个 Python 字典,看起来像这样:
D = {1:'a', 5:'b', 2:'a', 7:'a'}
键的值大多无关紧要。有没有办法按数字顺序按键遍历字典?键都是整数。
而不是说
for key in D:
# some code...
我可以按顺序浏览字典键1, 2, 5, 7
吗?
此外,我不能使用排序/排序功能。
你可以使用这个:
for key in sorted(D.iterkeys()):
.. code ..
在 Python 3.x 中,使用D.keys()
(与 Python 2.x 中的相同D.iterkeys()
)。
考虑到您不想排序的规定,并假设键都是整数,您可以简单地找到键的最大值和最小值,然后遍历该范围并检查每个键是否实际上在字典中。
for key in xrange(min(D), max(D) + 1):
if key in D:
print D[key]
当然,这不是很有效,但它会起作用,并且它避免了排序。
假设键/值按顺序插入,您可以使用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]
您可以使用 获取键列表dict.keys()
,然后遍历列表的排序视图:
for key in sorted(D.keys()):
print key, D[key]