国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

1.7 字典排序

2018-02-24 15:26 更新

問題

你想創(chuàng)建一個字典,并且在迭代或序列化這個字典的時候能夠控制元素的順序。

解決方案

為了能控制一個字典中元素的順序,你可以使用collections模塊中的OrderedDict類。在迭代操作的時候它會保持元素被插入時的順序,示例如下:

from collections import OrderedDict
def ordered_dict():
    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帶來的好處要大過額外內存消耗的影響。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號