本文目錄一覽:
Python初學(十九)
「鍵值對」是組織數據的一種重要方式,廣泛應用在Web系統中。鍵值對的基本思想是將「值」信息關聯一個「鍵」信息,進而通過鍵信息查找對應值信息,這個過程叫映射。Python語言中通過字典類型實現映射。
Python語言中的字典使用大括號{}建立,每個元素是一個鍵值對,使用方式如下:
{鍵1:值1, 鍵2:值2, … , 鍵n:值n}
其中,鍵和值通過冒號連接,不同鍵值對通過逗號隔開。字典類型也具有和集合類似的性質,即鍵值對之間沒有順序且不能重複。
列表類型採用元素順序的位置進行索引。由於字典元素「鍵值對」中鍵是值的索引,因此,可以直接利用鍵值對關係索引元素。
字典中鍵值對的索引模式如下,採用中括號格式:
值 = 字典變量[鍵]
print(d[『201801』])
輸出的也就是: 小明
使用大括號可以創建字典。通過索引和賦值配合,可以向字典中增加元素。
字典是存儲可變數量鍵值對的數據結構,鍵和值可以是任意數據類型,通過鍵索引值,並可以通過鍵修改值。
字典類型有一些通用的操作函數
dict()函數用於生成一個空字典,作用和{}一致
字典類型存在一些操作方法,使用語法形式是:
字典變量.方法名稱(方法參數)
d.keys()返回字典中的所有鍵信息,返回結果是Python的一種內部數據類型dict_keys,專用於表示字典的鍵。如果希望更好的使用返回結果,可以將其轉換為列表類型。
d.values()返回字典中的所有值信息,返回結果是Python的一種內部數據類型dict_values。如果希望更好的使用返回結果,也可以將其轉換為列表類型。
d.items()返回字典中的所有鍵值對信息,返回結果是Python的一種內部數據類型dict_items。當然也可以轉成列表類型 即: list(d.items())
d.get(key, default)根據鍵信息查找並返回值信息,如果key存在則返回相應值,否則返回默認值,第二個元素default可以省略,如果省略則默認值為空。 例如: 就拿上邊的數組d 來說 d.get(『201801』,「不存在」) 相當於一個if語句 如果key 201801 存在 就返回201801 values 不存在就返回 默認值 不存在
d.pop(key, default)根據鍵信息查找並取出值信息,如果key存在則返回相應值,否則返回默認值,第二個元素default可以省略,如果省略則默認值為空。相比d.get()方法,d.pop()在取出相應值後,將從字典中刪除對應的鍵值對。 和d.get方法類似
d.popitem()隨機從字典中取出一個鍵值對,以元組(key,value)形式返回。取出後從字典中刪除這個鍵值對。
d.clear()刪除字典中所有鍵值對。
此外,如果希望刪除字典中某一個元素,可以使用Python保留字del。 即: del d[key]
字典類型也支持保留字in,用來判斷一個鍵是否在字典中。如果在則返回True,否則返回False。
與其他組合類型一樣,字典可以遍歷循環對其元素進行遍歷,基本語法結構如下:
for 變量名 in 字典名
語句塊
for循環返回的變量名是字典的索引值。如果需要獲得鍵對應的值,可以在語句塊中通過get()方法獲得。
以上就是本章的所有內容,感謝大家.
Python 學習的基礎(持續更新中……)
python字典的特點和用處
字典的特點:
字典的每個健值的展現方式是:key:value用冒號分割;鍵值之間為逗號分割;整個字典用大括號{}將鍵值括起來;
鍵值可以是任意類型的對象;
鍵必須是唯一的;
鍵是不可變的;
字典的作用:
字典(日常生活中的字典和Python字典)旨在讓你能夠輕鬆地找到特定的單詞(鍵),以獲悉其定義(值)。
在很多情況下,使用字典都比使用列表更合適。下面是Python字典的一些用途:
表示棋盤的狀態,其中每個鍵都是由坐標組成的元組;
存儲文件修改時間,其中的鍵為文件名;
數字電話/地址簿。
python字典操作函數
字典是一種通過名字或者關鍵字引用的得數據結構,其鍵可以是數字、字符串、元組,這種結構類型也稱之為映射。字典類型是Python中唯一內建的映射類型,基本的操作包括如下:
(1)len():返回字典中鍵—值對的數量;
(2)d[k]:返回關鍵字對於的值;
(3)d[k]=v:將值關聯到鍵值k上;
(4)del d[k]:刪除鍵值為k的項;
(5)key in d:鍵值key是否在d中,是返回True,否則返回False。
(6)clear函數:清除字典中的所有項
(7)copy函數:返回一個具有相同鍵值的新字典;deepcopy()函數使用深複製,複製其包含所有的值,這個方法可以解決由於副本修改而使原始字典也變化的問題
(8)fromkeys函數:使用給定的鍵建立新的字典,鍵默認對應的值為None
(9)get函數:訪問字典成員
(10)has_key函數:檢查字典中是否含有給出的鍵
(11)items和iteritems函數:items將所有的字典項以列表方式返回,列表中項來自(鍵,值),iteritems與items作用相似,但是返回的是一個迭代器對象而不是列表
(12)keys和iterkeys:keys將字典中的鍵以列表形式返回,iterkeys返回鍵的迭代器
(13)pop函數:刪除字典中對應的鍵
(14)popitem函數:移出字典中的項
(15)setdefault函數:類似於get方法,獲取與給定鍵相關聯的值,也可以在字典中不包含給定鍵的情況下設定相應的鍵值
(16)update函數:用一個字典更新另外一個字典
(17) values和itervalues函數:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由於在字典中值不是唯一的,所以列表中可以包含重複的元素
一、字典的創建
1.1 直接創建字典
d={‘one’:1,’two’:2,’three’:3}
printd
printd[‘two’]
printd[‘three’]
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:1}
1.2 通過dict創建字典
# _*_ coding:utf-8 _*_
items=[(‘one’,1),(‘two’,2),(‘three’,3),(‘four’,4)]
printu’items中的內容:’
printitems
printu’利用dict創建字典,輸出字典內容:’
d=dict(items)
printd
printu’查詢字典中的內容:’
printd[‘one’]
printd[‘three’]
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
items中的內容:
[(‘one’,1), (‘two’,2), (‘three’,3), (‘four’,4)]
利用dict創建字典,輸出字典內容:
{‘four’:4,’three’:3,’two’:2,’one’:1}
查詢字典中的內容:
或者通過關鍵字創建字典
# _*_ coding:utf-8 _*_
d=dict(one=1,two=2,three=3)
printu’輸出字典內容:’
printd
printu’查詢字典中的內容:’
printd[‘one’]
printd[‘three’]
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
輸出字典內容:
{‘three’:3,’two’:2,’one’:1}
查詢字典中的內容:
二、字典的格式化字符串
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3,’four’:4}
printd
print”three is %(three)s.”%d
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘four’:4,’three’:3,’two’:2,’one’:1}
threeis3.
三、字典方法
3.1 clear函數:清除字典中的所有項
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3,’four’:4}
printd
d.clear()
printd
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘four’:4,’three’:3,’two’:2,’one’:1}
{}
請看下面兩個例子
3.1.1
# _*_ coding:utf-8 _*_
d={}
dd=d
d[‘one’]=1
d[‘two’]=2
printdd
d={}
printd
printdd
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘two’:2,’one’:1}
{}
{‘two’:2,’one’:1}
3.1.2
# _*_ coding:utf-8 _*_
d={}
dd=d
d[‘one’]=1
d[‘two’]=2
printdd
d.clear()
printd
printdd
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘two’:2,’one’:1}
{}
{}
3.1.2與3.1.1唯一不同的是在對字典d的清空處理上,3.1.1將d關聯到一個新的空字典上,這種方式對字典dd是沒有影響的,所以在字典d被置空後,字典dd裏面的值仍舊沒有變化。但是在3.1.2中clear方法清空字典d中的內容,clear是一個原地操作的方法,使得d中的內容全部被置空,這樣dd所指向的空間也被置空。
3.2 copy函數:返回一個具有相同鍵值的新字典
# _*_ coding:utf-8 _*_
x={‘one’:1,’two’:2,’three’:3,’test’:[‘a’,’b’,’c’]}
printu’初始X字典:’
printx
printu’X複製到Y:’
y=x.copy()
printu’Y字典:’
printy
y[‘three’]=33
printu’修改Y中的值,觀察輸出:’
printy
printx
printu’刪除Y中的值,觀察輸出’
y[‘test’].remove(‘c’)
printy
printx
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
初始X字典:
{‘test’: [‘a’,’b’,’c’],’three’:3,’two’:2,’one’:1}
X複製到Y:
Y字典:
{‘test’: [‘a’,’b’,’c’],’one’:1,’three’:3,’two’:2}
修改Y中的值,觀察輸出:
{‘test’: [‘a’,’b’,’c’],’one’:1,’three’:33,’two’:2}
{‘test’: [‘a’,’b’,’c’],’three’:3,’two’:2,’one’:1}
刪除Y中的值,觀察輸出
{‘test’: [‘a’,’b’],’one’:1,’three’:33,’two’:2}
{‘test’: [‘a’,’b’],’three’:3,’two’:2,’one’:1}
註:在複製的副本中對值進行替換後,對原來的字典不產生影響,但是如果修改了副本,原始的字典也會被修改。deepcopy函數使用深複製,複製其包含所有的值,這個方法可以解決由於副本修改而使原始字典也變化的問題。
# _*_ coding:utf-8 _*_
fromcopyimportdeepcopy
x={}
x[‘test’]=[‘a’,’b’,’c’,’d’]
y=x.copy()
z=deepcopy(x)
printu’輸出:’
printy
printz
printu’修改後輸出:’
x[‘test’].append(‘e’)
printy
printz
運算輸出:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
輸出:
{‘test’: [‘a’,’b’,’c’,’d’]}
{‘test’: [‘a’,’b’,’c’,’d’]}
修改後輸出:
{‘test’: [‘a’,’b’,’c’,’d’,’e’]}
{‘test’: [‘a’,’b’,’c’,’d’]}
3.3 fromkeys函數:使用給定的鍵建立新的字典,鍵默認對應的值為None
# _*_ coding:utf-8 _*_
d=dict.fromkeys([‘one’,’two’,’three’])
printd
運算輸出:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:None,’two’:None,’one’:None}
或者指定默認的對應值
# _*_ coding:utf-8 _*_
d=dict.fromkeys([‘one’,’two’,’three’],’unknow’)
printd
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:’unknow’,’two’:’unknow’,’one’:’unknow’}
3.4 get函數:訪問字典成員
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3}
printd
printd.get(‘one’)
printd.get(‘four’)
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:1}
1
None
註:get函數可以訪問字典中不存在的鍵,當該鍵不存在是返回None
3.5 has_key函數:檢查字典中是否含有給出的鍵
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3}
printd
printd.has_key(‘one’)
printd.has_key(‘four’)
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:1}
True
False
3.6 items和iteritems函數:items將所有的字典項以列表方式返回,列表中項來自(鍵,值),iteritems與items作用相似,但是返回的是一個迭代器對象而不是列表
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3}
printd
list=d.items()
forkey,valueinlist:
printkey,’:’,value
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:1}
three :3
two :2
one :1
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3}
printd
it=d.iteritems()
fork,vinit:
print”d[%s]=”%k,v
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:1}
d[three]=3
d[two]=2
d[one]=1
3.7 keys和iterkeys:keys將字典中的鍵以列表形式返回,iterkeys返回鍵的迭代器
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3}
printd
printu’keys方法:’
list=d.keys()
printlist
printu’\niterkeys方法:’
it=d.iterkeys()
forxinit:
printx
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:1}
keys方法:
[‘three’,’two’,’one’]
iterkeys方法:
three
two
one
3.8 pop函數:刪除字典中對應的鍵
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3}
printd
d.pop(‘one’)
printd
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:1}
{‘three’:3,’two’:2}
3.9 popitem函數:移出字典中的項
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3}
printd
d.popitem()
printd
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:1}
{‘two’:2,’one’:1}
3.10 setdefault函數:類似於get方法,獲取與給定鍵相關聯的值,也可以在字典中不包含給定鍵的情況下設定相應的鍵值
# _*_ coding:utf-8 _*_
d={‘one’:1,’two’:2,’three’:3}
printd
printd.setdefault(‘one’,1)
printd.setdefault(‘four’,4)
printd
運算結果:
{‘three’:3,’two’:2,’one’:1}
{‘four’:4,’three’:3,’two’:2,’one’:1}
3.11 update函數:用一個字典更新另外一個字典
# _*_ coding:utf-8 _*_
d={
‘one’:123,
‘two’:2,
‘three’:3
}
printd
x={‘one’:1}
d.update(x)
printd
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{‘three’:3,’two’:2,’one’:123}
{‘three’:3,’two’:2,’one’:1}
3.12 values和itervalues函數:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由於在字典中值不是唯一的,所以列表中可以包含重複的元素
# _*_ coding:utf-8 _*_
d={
‘one’:123,
‘two’:2,
‘three’:3,
‘test’:2
}
printd.values()
運算結果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
[2,3,2,123]
python裏面的字典有什麼用?
字典是另一種可變容器模型,可存儲任意類型對象。
字典的每個鍵值 key-value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵一般是唯一的,必須是不可變的,如字符串,數字或元組。值不需要唯一,可以取任何數據類型。
在需要使用hash時,就需要用到字典。
比如在統計字符個數時,可以使用字典。
d = {}
for char in strs:
d[char] = d.get(char, 0) + 1
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/243795.html