日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
Python有序字典的兩個小“驚喜”

從 Python 3.6 開始,常規(guī)的字典會記住其插入的順序:就是說,當遍歷字典時,你獲得字典中元素的順序跟它們插入時的順序相同。

成都創(chuàng)新互聯(lián)公司專注于定南企業(yè)網站建設,響應式網站設計,商城網站建設。定南網站建設公司,為定南等地區(qū)提供建站服務。全流程按需定制制作,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務

在 3.6 之前,字典是無序的:遍歷順序是隨機的。

關于有序字典,這里有兩件令人意外的事情。

1. 你無法獲得第一個元素

由于字典中的元素具有特定的順序,因此獲取第一個(或第 N 個)元素應該很容易,對吧?

不對!沒辦法直接做到。

你可能會認為 d[0] 就是第一個元素,但并不是,它只是鍵為 0 的值,有可能是添加到字典的最后一個元素。

獲得第 N 個元素的唯一方法是遍歷字典,直到取得第 N 個元素。不能根據(jù)有序索引來作隨機訪問。

這是一處列表勝過字典的地方。獲取列表的第 N 個元素是 O(1) 操作。獲取字典的第 N 個元素(即使已排序)是 O(N) 操作。

2. OrderedDict 有點不同

由于現(xiàn)在的字典是有序的,collections.OrderedDict 就沒用了,對吧?

(譯注:3.6 版本前的 dict 是無序的,但標準庫里提供了一個有序字典 OrderedDict?,F(xiàn)在 dict 變有序了,那 OrderedDict 似乎是多余了?)

好像是。但是它不會被刪除,因為那樣會破壞正在使用它的代碼,并且它還擁有一些常規(guī)字典沒有的方法。

另外,它們在行為上也有細微的差別。在比較是否相等時,常規(guī)字典不會考慮順序,但 OrderedDict 會:

 
 
 
  1. >>> d1 = {"a": 1, "b": 2} 
  2. >>> d2 = {"b": 2, "a": 1} 
  3. >>> d1 == d2 
  4. True 
  5. >>> list(d1) 
  6. ['a', 'b'] 
  7. >>> list(d2) 
  8. ['b', 'a'] 
  9.  
  10. >>> from collections import OrderedDict 
  11. >>> od1 = OrderedDict([("a", 1), ("b", 2)]) 
  12. >>> od2 = OrderedDict([("b", 2), ("a", 1)]) 
  13. >>> od1 == od2 
  14. False 
  15. >>> list(od1) 
  16. ['a', 'b'] 
  17. >>> list(od2) 
  18. ['b', 'a'] 
  19. >>> 

(譯文完):(https://nedbatchelder.com//blog/202010/ordered_dict_surprises.html)


網站標題:Python有序字典的兩個小“驚喜”
當前鏈接:http://www.dlmjj.cn/article/djipphh.html