Python cookbook筆記——一鍵多值字典(multidict)


字典是一種關聯容器,每個鍵都映射到一個單獨的值上,如果想讓鍵映射到多個值,需要將這多個值保存到另一個容器如列表或集合中

如果希望保留元素插入的順序,就用列表;如果希望消除重復元素且不在意他們的順序,就用集合

1.collections模塊中的defaultdict類

  1)  defaultdict類的一個特點是它會自動初始化第一個值,這樣只需要關注添加元素即可

    d = defaultdict(set)

 

    d['a'].add(1)

    或

    d = defaultdict(list)

    d['a'].append(1)

  2)  defaultdict會自動創建字典表項以待稍后的訪問(即使這些表項在字典中還沒有找到,若不想使用此功能,可以在普通的字典上調用setdefault()方法來取代

    如d = {}#  a regular dictionary

    d.setdefault('a',[]).append()

2. collections中的OrderedDict類

  3) 讓字典保持有序,對字典做迭代時,會按照元素初始添加的順序進行

    當想構建一個映射結構一遍稍后進行序列化或轉換為另一種格式時,OrderedDict類非常有用,如進行JSON編碼時希望精確控制各字段的順序,那么首先在OrderedDict中構建數據即可

  2) OrderedDict內部維護了一個雙向鏈表,會根據元素加入的順序來排列鍵的位置,新加入的元素被放在鏈表末尾,對已存在的鍵重新賦值不會改變鍵的順序

    OrderedDict的內存開支是普通字典的兩倍多,是由於額外創建的鏈表所致,構建一個涉及大量OrderedDict實例的數據結構,需要權衡使用OrderedDict的好處能否超過內存開銷帶來的缺點

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM