你想建立乙個字典,並且在迭代或序列化這個字典的時候能夠控制元素的順序。為了能控制乙個字典中元素的順序,你可以使用 collections 模組中的 ordereddict 類。在迭代操作的時候它會保持元素被插入時的順序,示例如下:
from collections import ordereddict
d = ordereddict()d[
'foo']=
1d['bar']=
2d['spam']=
3d['grok']=
4# outputs "foo 1", "bar 2", "spam 3", "grok 4"
for key in d:
print
(key, d[key]
)
當你想要構建乙個將來需要序列化或編碼成其他格式的對映的時候, ordereddict 是非常有用的。比如,你想精確控制以 json 編碼後字段的順序,你可以先使用 ordereddict 來構建這樣的資料:
>>
>
import json
>>
> json.dumps(d)
''>>
>
ordereddict 內部維護著乙個根據鍵插入順序排序的雙向鍊錶。每次當乙個新的元素插入進來的時候,它會被放到鍊錶的尾部。對於乙個已經存在的鍵的重複賦值不會改變鍵的順序。
需要注意的是,乙個 ordereddict 的大小是乙個普通字典的兩倍,因為它內部維護著另外乙個鍊錶。
所以如果你要構建乙個需要大量 ordereddict 例項的資料結構的時候(比如讀取 100,000 行 csv 資料到乙個 ordereddict 列表中去),
那麼你就得仔細權衡一下是否使用 ordereddict 帶來的好處要大過額外記憶體消耗的影響。
python實現字典排序 python 字典排序
引子 字典,形如 dic 字典中的元素沒有順序,所以dic 0 是有語法錯誤的。並且不可以有重複的鍵值,所以 dic.add c 4後,字典變成 待解決問題 如何根據需要可以根據 鍵 或 鍵值 進行不同順序的排序?函式原型 sorted dic,value,reverse dic為比較函式,valu...
python字典排序
1 準備知識 在python裡,字典dictionary是內建的資料型別,是個無序的儲存結構,每一元素是key value對 如 dict 其中 username 和 database 是key,而 password 和 master 是value,可以通過d key 獲得對應值value的引用,但...
python 字典排序
prices 對於這樣乙個字典,如何根據 來對字典進行排序呢?首先你就會問,python中的字典明明是無序的,何談排序之說?別急,辦法總是有的。對於這樣乙個字典的排序,直接使用sorted函式肯定是不行的,因為其排序依據是根據keys而非values。若想對它字典進行排序,首先要做的就是將鍵值對反轉...