5
我可以找到的所有示例(in the documentation等)通過將數據傳遞給構造函數來定義OrderedDicts。從文檔:是否可以使用預定義的排序機制在Python中初始化一個空的OrderedDict?
# regular unsorted dictionary
d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
# dictionary sorted by key
OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
在另一方面,可以通過提供無參數的構造,這導致它保存在哪個鍵,值對添加順序初始化的OrderedDict。
我在尋找一種類似於下面的構造,除非沒有「d.items()」。從本質上講,我要求它記住一個機制而不提供它的例子,這聽起來可能很瘋狂。我唯一的選擇是通過提供一個初始的「d」(下)與單個項目來「破解」這個選項,還是有更好的方法?
OrderedDict(sorted(d.items(), key=lambda t: t[0]))
謝謝!
是的,這是默認行爲? –
排序字典在插入時不會重新排序其內容。他們記得插入順序並且可以排序,但是他們不僅在添加密鑰時進行自動排序。爲此,您正在尋找類似於SortedCollection的東西。 IIRC有一個使用對分模塊的配方(http://code.activestate.com/recipes/577197-sortedcollection/),但OrderedDict本身還不夠。 –
您可能可以推出自己的產品,也許可以考慮使用['heapq'](https://docs.python.org/2/library/heapq.html#module-heapq)在內部保留排序 – GP89