《Python Cookbook 3rd》笔记(1.7):字典排序
生活随笔
收集整理的這篇文章主要介紹了
《Python Cookbook 3rd》笔记(1.7):字典排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
字典排序
問題
你想創建一個字典,并且在迭代或序列化這個字典的時候能夠控制元素的順序。
解法
為了能控制一個字典中元素的順序,你可以使用 collections模塊中的OrderedDict類。在迭代操作的時候它會保持元素被插入時的順序,示例如下:
from collections import OrderedDict d = OrderedDict() d['foo'] = 1 d['bar'] = 2 d['spam'] = 3 d['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) '{"foo": 1, "bar": 2, "spam": 3, "grok": 4}' >>>討論
OrderedDict 內部維護著一個根據鍵插入順序排序的雙向鏈表。每次當一個新的元素插入進來的時候,它會被放到鏈表的尾部。對于一個已經存在的鍵的重復賦值不會改變鍵的順序。
需要注意的是,一個OrderedDict的大小是一個普通字典的兩倍,因為它內部維護著另外一個鏈表。所以如果你要構建一個需要大量 OrderedDict 實例的數據結構的時候 (比如讀取 100,000 行 CSV 數據到一個 OrderedDict 列表中去),那么你就得仔細權衡一下是否使用 OrderedDict 帶來的好處要大過額外內存消耗的影響。
總結
以上是生活随笔為你收集整理的《Python Cookbook 3rd》笔记(1.7):字典排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Python Cookbook 3rd
- 下一篇: 《Python Cookbook 3rd