python--dict方法總結


python dict
一、為什么使用dict?
1. 優點
2. 特點
二、dict的函數使用
1. 構造
2. 基本操作(增,刪,查,改)
3. 旋轉構造
4. dict持久化
5. defaultdict
一、為什么使用dict?
1. 優點
1:查找速度快
2:浪費空間
3:key不可以重復,且不可變
4:數據無序排放

2. 特點
1.任何不可變對象都可用作字典的鍵,如字符串、數字、元組等
2.包含可變對象的列表、字典和元組不能用作鍵
3.引用不存在的鍵會引發KeyError異常
4.value可以是字符,數字,列表,元組,字典

二、dict的函數使用
1. 構造
dict {} #空字典
dict={key:value} #經典定義
dict2 = dict(x=1,y=2,z=3) #定義字典另一種方式 // {'y': 2, 'x': 1, 'z': 3}
Dict1=dict2 #淺復制,只是引用而已id(dict1)==id(dict2)
Dict1=dict2.copy() #深復制,2個不同ID的字典id(dict1)!=id(dict2)
Dict=dict.fromkeys(seq,val=None) #創建並返回一個新字典,以 seq 中的元素做該字典的鍵,val 做該字典中所有鍵對應的初始值(如果不提供此值,則默認為 None)
dict([container]) #創 建 字 典 的 工 廠 函 數 。 如 果 提 供 了 容 器 類 (container) 就用其中的條目填充字典,否則就創建一個空字典。
1
2
3
4
5
6
7
2. 基本操作(增,刪,查,改)
增加
dict[key]=value
dict.update(dict2) #將字典 dict2 的鍵-值對添加到字典 dict
result = dict(dict1,**dict2) #將字典 dict2 的鍵-值對與字典dict1的鍵-值對合並為新的dict
dict.setdefault(key,default=None) #和方法 set()相似,如果字典中不存在 key 鍵,由 dict[key]=default 為它賦值。
1
2
3
4
刪除
del d[key] #刪除指定key
d.clear() #清空字典
dict.popc(key[, default]) #和方法 get()相似,如果字典中 key 鍵存在,刪除並返回 dict[key],如果 key 鍵不存在,且沒有給出 default 的值,引發 KeyError 異常。
dict.popitem() #隨機彈出(key,value)元組
1
2
3
4
查詢
key in dict #判斷鍵(key)是否在字典中存在,是返回 True, 否則返回 False
a=dict[key] #獲取指定key的值,如果key不存在,會拋出異常
dict.get(key,[default]) #如果有這個key,返回value,沒有這個key,則賦予默認值
len(dict) #返回映射的長度(鍵-值對的個數)
dict.cmp(dict1,dict2) #比較字典,(優先級為元素個數、鍵大小、鍵值大小) #第一個大返回1,小返回-1,一樣返回0
dict.items() #返回一個包含字典中(鍵, 值)對元組的列表
dict.keys() #返回一個包含字典中鍵的列表
dict.values() #返回一個包含字典中所有值的列表
dict.iter() #方法 iteritems(), iterkeys(), itervalues()與它們對應的非迭代方法一樣,不同的是它們返回一個迭代子,而不是一個列表。
dict.iteritems() #返回一個dict中(key,value)元組的迭代器對象
d1 = { 'x':1,'y':2,'z':3 } //i1 = d1.iteritems() //i1.next() >>('y', 2)使用next方式遍歷每一個元素
dict.iterkeys() #返回dict中key的迭代器對象
dict.itervalues() #返回dict中value的迭代器對象
dict.viewvalues() #返回類似集合方式的字典(值組成)
d1.viewvalues() //dict_values([2, 1, 3])
dict.viewitems() #返回類似集合方式的字典(值組成)(key,value)元組組成
d1.viewitems() //dict_items([('y', 2), ('x', 1), ('z', 3)])
dict.viewkeys() #返回類似集合方式的字典(鍵組成)
d1.viewkeys() //dict_keys(['y', 'x', 'z'])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
修改
d[key] = value
1
3. 旋轉構造
zip返回元組組成的列表
zip('xyz','123') #[('x', '1'), ('y', '2'), ('z', '3')]對應生成列表
zip('xyzm','123') #[('x', '1'), ('y', '2'), ('z', '3')]多余項被舍棄
zip('xyz','123','qer') #[('x', '1', 'q'), ('y', '2', 'e'), ('z', '3', 'r')]
dict(zip('xyz','123')) #{'y': '2', 'x': '1', 'z': '3'}構造字典
格式化輸出字典
import jsonprint json.dumps(d,indent=2) #不同層級以2個空格縮進
1
2
3
4
5
6
7
4. dict持久化
先把字典轉換成字符串,然后把字符串寫入文件,讀出來時再把字符串為字典

import json
data = json.dumps(d)with open(f,'wb') as f:
f.write(data)

import json
with open(f,'wb') as f:
data = f.read()
d = json.loads(data)
1
2
3
4
5
6
7
8
9
10
5. defaultdict
from collections import defaultdict
d=defaultdict(內建函數)
內建函數有:int(), long(), float(), complex(),str(), unicode(), basestring() ,list(), tuple() ,type() ,dict() ,bool() ,set(), frozenset() ,object() ,classmethod() staticmethod() ,super() ,property() ,file()
功能:dict中value默認值為內建函數的默認值,且value的類型為內建函數的類型,如果是普通的dict,則對於不存在的key,其value是不存在的,訪問會報錯,但對於defaultdict,對於不存在的key,其value存在,為內建函數的默認值
d=defaultdict(lambda:0) 初始化為0
d=defaultdict(int) 初始值為int()的初始值0
d=defaultdict(list) 初始值為list()的初始值[]
d=defaultdict(dict) 初始值為dict()的初始值{}
————————————————
版權聲明:本文為CSDN博主「今生唯爾」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_31813549/article/details/79090013


免責聲明!

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



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