我在Python的字典,這些看起來像這樣:迭代通過按鍵Python字典的排序順序
D = {1:'a', 5:'b', 2:'a', 7:'a'}
鍵的值大多是不相關的。有沒有辦法按數字順序按鍵遍歷字典?鑰匙都是整數。
與其說
for key in D:
# code...
我可以順利通過的順序1,2,5,7字典鍵?感謝您的幫助提前。
此外,我不能使用排序/排序功能。
我在Python的字典,這些看起來像這樣:迭代通過按鍵Python字典的排序順序
D = {1:'a', 5:'b', 2:'a', 7:'a'}
鍵的值大多是不相關的。有沒有辦法按數字順序按鍵遍歷字典?鑰匙都是整數。
與其說
for key in D:
# code...
我可以順利通過的順序1,2,5,7字典鍵?感謝您的幫助提前。
此外,我不能使用排序/排序功能。
您可以使用此:
for key in sorted(D.iterkeys()):
.. code ..
在Python 3.x中,使用D.keys()
(與Python 2.x中的D.iterkeys()
相同)。
你可以使用dict.keys()
鍵的列表,然後遍歷列表的排序視圖:
for key in sorted(D.keys()):
print key, D[key]
有沒有辦法做到這一點,而不明確使用排序功能?這是挑戰的一部分,我們必須在不使用排序功能的情況下對所有內容進行排序。對不起,我應該早些提到這一點。 – ben 2013-02-13 21:36:40
@ben。那麼你將不得不編寫自己的排序邏輯。但你爲什麼要重新發明輪子? – 2013-02-13 21:37:56
通常是因爲有人爲他的CS作業使用堆棧溢出。 – 2017-09-26 18:14:22
考慮到您不想排序的規定,並且假設鍵都是整數,您可以簡單地找到鍵的最大值和最小值,然後遍歷該範圍並檢查每個鍵是否實際在字典裏。
for key in xrange(min(D), max(D) + 1):
if key in D:
print D[key]
這是不是很有效,當然,但它會工作,它避免了排序。
這是一個聰明的黑客。但是,如果字典中只有2個鍵,'1'和'1000000'?說啥? – 2013-02-13 21:43:57
是的,排序絕對更好! – kindall 2013-02-13 21:45:09
這仍然給OP確切的他想要的。 – 2013-02-13 21:46:16
假設鍵/值插入順序,您可以使用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]
如果您不想更改現有字典,只需爲您的有序字典建立一個臨時變量,並將其設置爲來自集合的OrderedDict(D) >>> import a OrderedDict >>> a = {'a':' A','b':'B','c':'C'} >>> OrderedDict(a) returns - > OrderedDict([('a','A'),('b',' B'),('c','C')]) – 2015-06-19 17:52:08
的可能的複製(HTTP [在Python,我怎麼遍歷在有序字典?]:/ /stackoverflow.com/questions/364519/in-python-how-do-i-iterate-over-a-dictionary-in-sorted-order) – 2016-07-24 22:50:03