1、字典的概念
Python
中的字典數(shù)據(jù)類型和現(xiàn)實中的字典很像,它是以鍵值對(鍵和值的組合)的方式把數(shù)據(jù)組織到一起,可以通過鍵找到與之對應的值并進行操作。就跟字典中每次字(鍵)都會有對應的解釋(值)一樣,每個字和它的解釋合在一起就是字典中的一個條目,而字典中通常包含了很多個這樣的條目。
2、創(chuàng)建和使用字典
在Python
中創(chuàng)建字典使用{}字面量語法,這跟創(chuàng)建集合的符號是一樣的。但是字典的{}中的元素是以鍵值對的形式存在的,每個元素由:分隔的兩個值構(gòu)成,:前面是鍵:后面是值,每個對之間用逗號,分割語法格式,
具體語法格式如下:
1
|
dict = {key1 : value1, key2 : value2 } |
2.1 創(chuàng)建字典
1
2
3
4
5
6
7
8
9
10
|
# 創(chuàng)建字典 dict1 = { "姓名" : "甜甜" } print ( type (dict1), dict1) # <class 'dict'> {'姓名': '甜甜'} dict2 = { "姓名" : "甜甜" , "性別" : "女" , "年齡" : "19" } print (dict2) # {'姓名': '甜甜', '性別': '女', '年齡': '19'} |
使用dict()
或者是字典的生成式語法來創(chuàng)建字典,示例代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 使用dict 創(chuàng)建對象,鍵不可以加""引號 dict1 = dict (姓名 = "甜甜" , 性別 = "女" , 年齡 = "19" ) print ( type (dict1), dict1) # <class 'dict'> {'姓名': '甜甜', '性別': '女', '年齡': '19'} list1 = [ "姓名" , "性別" , "年齡" ] list2 = [ "甜甜" , "女" , "19" ] # zip()函數(shù)將對象中對應的元素打包成一個個元組,返回由這些元組組成的對象 dict2 = dict ( zip (list1, list2)) print (dict2) # {'姓名': '甜甜', '性別': '女', '年齡': '19'} # 使用生成列創(chuàng)建字典 dict3 = {x: x * * 3 for x in range ( 6 )} print (dict3) # {0: 0, 1: 1, 2: 8, 3: 27, 4: 64, 5: 125} |
可以使用len(dict)
得到字典元素個數(shù),即鍵的總數(shù)
for循環(huán)也只能對鍵有效
1
2
3
4
5
6
7
8
9
10
|
dict1 = { '姓名' : '甜甜' , '性別' : '女' , '年齡' : '19' } print ( len (dict1)) # 3 for ch in dict1: print (ch) ''' 姓名 性別 年齡 ''' |
3、字典的運算
對于字典來說,成員運算和索引(字典的索引是鍵值對中的鍵)運算是尤為重要的,前者可以判斷指定的鍵在不在字典中,后者可以得對應的值,或?qū)ζ溥M行修改或者新加。字典中的鍵必須是不變類型,例如整數(shù)(int
)、浮點數(shù)(float
)、字符串(str
)、元組(tuple
)等類型的值。字典本身也是可變類型
示例代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
dict1 = { '姓名' : '甜甜' , '性別' : '女' , '年齡' : '19' } # 成員運算 print ( "姓名" in dict1, "性別" not in dict1) # True False # 先判斷在修改 if "姓名" in dict1: dict1[ "姓名" ] = '王甜甜' print (dict1) # {'姓名': '王甜甜', '性別': '女', '年齡': '19'} # 通過索引為dict1 增加數(shù)據(jù) dict1[ "愛好" ] = "旅游" print ( "愛好" in dict1) # True # 對字典的鍵進行循環(huán)并通索引運算獲取鍵對應的值 for key in dict1: print (f '{key}: {dict1[key]}' ) ''' 姓名: 王甜甜 性別: 女 年齡: 19 愛好: 旅游 ''' |
注意:在通過索引運算獲取字典中的值時,如指定的鍵沒有在字典中,將會引發(fā)KeyError異常
3.1 字典的方法
字典的方法都是對鍵值對進行相關(guān)操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# 字典的嵌套 students = { 10001 : { "name" : "小明" , "sex" : "男" , "age" : 18 }, 10002 : { "name" : "小紅" , "sex" : "女" , "age" : 16 }, 10003 : { "name" : "小白" , "sex" : "女" , "age" : 19 }, 10004 : { "name" : "小周" , "sex" : "男" , "age" : 20 } } # 使用get方法通過鍵獲取對應的值,如果取不到是返回的默認值(默認為None) print (students.get( 10002 )) # {'name': '小紅', 'sex': '女', 'age': 16} print (students.get( 10005 )) # None print (students.get( 10005 , "沒有這個學生" )) # 沒有這個學生 # 獲取字典中所有的鍵 print (students.keys()) # dict_keys([10001, 10002, 10003, 10004]) # 獲取字典中所有的值 print (students.values()) # dict_values([{...}, {...}, {...}, {...}]) # 獲取字典中所有的鍵值對 # dict_items([(10001, {...}), (10002, {....}), (10003, {...}), (10004, {...})]) print (students.items()) # 對字典中所有的鍵值對進行循環(huán)遍歷 for key, value in students.items(): print (key, '--->' , value) # 使用pop方法通過鍵刪除對應的鍵值對并返回該值 stu1 = students.pop( 10002 ) print (stu1) # {'name': '小紅', 'sex': '女', 'age': 16} print ( len (students)) # 3 # 如果刪除的不在字典中,會引發(fā)KeyError異常 # stu2 = students.pop(10005) # KeyError: 10005 # 使用popitem方法刪除字典中最后一組鍵值對并返回對應的二元組 # 如果字典中沒有元素,調(diào)用該方法將引發(fā)KeyError異常 key, value = students.popitem() print (key, value) # 10004 {'name': '小周', 'sex': '男', 'age': 20} # setdefault可以更新字典中的鍵對應的值或向字典中存入新的鍵值對 # setdefault方法的第一個參數(shù)是鍵,第二個參數(shù)是鍵對應的值 # 如果這個鍵在字典中存在,更新這個鍵之后會返回原來與這個鍵對應的值 # 如果這個鍵在字典中不存在,方法將返回第二個參數(shù)的值,默認為None result = students.setdefault( 10005 , { "name" : "小綠" , "sex" : "女" , "age" : 18 }) print (result) # {'name': '小綠', 'sex': '女', 'age': 18} print (students) # {10001: {...}, (10003, {...}), 10005: {...}} # 使用update更新字典元素,相同的鍵會用新值覆蓋掉舊值,不同的鍵會添加到字典中 others = { 10005 : { "name" : "小南" , "sex" : "男" , "age" : 19 }, 10006 : { "name" : "小北" , "sex" : "男" , "age" : 19 }, 10007 : { "name" : "小冬" , "sex" : "男" , "age" : 19 } } students.update(others) # {10001: {...}, 10003: {...}, 10005: {...}, 10006: {...}, 10007: {...}} print (students) |
到此這篇關(guān)于Python字典的基礎(chǔ)操作的文章就介紹到這了,更多相關(guān)Python字典內(nèi)容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務器之家!
原文鏈接:https://juejin.cn/post/7022995510562652167