第13課 字典
一、字典
1、字典的定義:{ } <class 'dict'>
>>> dict1 = {} >>> type(dict1) <class 'dict'>
2、dict1 = {鍵1:值,鍵2:值}
dict2 = {'name': 'Tom', 'age':18, 'weight': 130}
3、鍵值成對出現,不然會報錯。
>>> dict2 = {'name': 'Tom', 'age':18, 'weight': 130} >>> dict3 = {'name': 'jacky', 'age': 18, 'class'} SyntaxError: invalid syntax
4、通過鍵來查詢元素,沒有下標的概念。
>>> dict2 = {'name': 'Tom', 'age':18, 'weight': 130} >>> dict2['weight'] 130
1)用len(dict1)來獲取字典的長度
>>> dict2 = {name:'Tom', age:18 , weight:130} >>> len(dict2) 3
5、字典裡沒有同名的key(鍵),就算有,後面的key也會把前面同名的key覆蓋掉。
>>> dict3 = {'name':'Tom', 'age':18, 'name':'Jacky'} >>> dict3 {'name': 'Jacky', 'age': 18}
6、增加元素----格式:dict1[鍵名] = 值
1)python2--增加字典元素的位置是隨機的;
2)python3--從字典後面依次增加
>>> dict3 = {'name':'Tom', 'age':18} >>> dict3['weight'] = 136 >>> dict3 {'name': 'Tom', 'age': 18, 'weight': 136}
7、如果該字典裡面沒有這個key,那麼列印這個key對應的值會報錯----keyerror
>>> dict3 = {'name': 'Tom', 'age': 18, 'weight': 136} >>> print(dict3['class']) Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> print(dict3['class']) KeyError: 'class'
8、增加字典的元素:dict1[新鍵名] = 對應的值
9、字典可以儲存任意型別
# 一個鍵對應的值可以是任意型別 students = { 'Jim Green': {'age': 18, 'height': 186, 'weight': 180, 'nickname': 'Jimy'}, 'Linda Smith':{ 'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet' } } print(students['Linda Smith']) # 執行結果 {'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet'}
列印Jim的年齡資訊
print(students['Jim Green']['age']) # 列印Jim的年齡 #輸出結果 18
10、關於key的型別,value的型別
1)key的型別:int、str、float和tuple,但是不能為list(列表)、dict(字典)。hash:散列表----不能改變的型別
注意:對鍵值操作時不要刻意改變key。
>>> dict1 = {1: 'int型', 3.14: 'float型', 'yy': 'str型', (6,7,8,9): 'tuple型'} >>> dict1 {1: 'int型', 3.14: 'float型', 'yy': 'str型', (6, 7, 8, 9): 'tuple型'}
當key的型別為列表時會報錯
>>> dict1 = {[1,2,'yy']: 'list型'} Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> dict1 = {[1,2,'yy']: 'list型'} TypeError: unhashable type: 'list'
key的型別為字典也報錯
>>> dict1 = {{'name': 'Tom'}: 33} Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> dict1 = {{'name': 'Tom'}: 33} TypeError: unhashable type: 'dict'
2)value(值):可以為任意型別
二、常用操作
1、判斷字典裡是否有這個key,可以用---key in dict1;在python2中dict1.has.key(鍵)的形式。
>>> dict1 = {1: 'int型', 3.14: 'float型', 'yy': 'str型', (6,7,8,9): 'tuple型'} >>> 3.14 in dict1 True >>> 'xx' in dict1 False
2、關於字典的刪除元素:字典裡面的key相當於list裡面的index(下標)
1)del dict1['name']
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> del dict1['name'] >>> dict1 {'age': 21, 'weight': 130}
2) value = dict1.pop('name')
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> dict1.pop('name') 'Tom' >>> dict1 {'age': 21, 'weight': 130}
3、字典的遍歷
1)for one in dict1 ----one依次取key本身的值
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> for one in dict1: print(one) name age weight
2)列印字典的值----dict的[one]
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> for one in dict1: # one 指的是字典值的內容 print(dict1[one]) Tom 21 130
3)列印字典特定的值-----dict1[one['age']]
students = { 'Jim Green': {'age': 18, 'height': 186, 'weight': 180, 'nickname': 'Jimy'}, 'Linda Smith':{ 'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet' } } for one in students: print(students[one]['age']) # 執行結果 18 23
4)students.items()----遍歷字典的鍵值對[(鍵1, 值1), (鍵2, 值2)]
print(students.items()) # 結果是一個列表,列表中包含元組 dict_items([('Jim Green', {'age': 18, 'height': 186, 'weight': 180, 'nickname': 'Jimy'}), ('Linda Smith', {'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet'})])
把資訊從students.items()中取出來---for name, info in students.items():
students = { 'Jim Green': {'age': 18, 'height': 186, 'weight': 180, 'nickname': 'Jimy'}, 'Linda Smith':{ 'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet' } } for name, info in students.items(): print(name, info) # 執行結果 Jim Green {'age': 18, 'height': 186, 'weight': 180, 'nickname': 'Jimy'} Linda Smith {'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet'}
4、清空字典內容:
1)dict1.clear()----清空字典本身內容
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> dict1.clear() >>> dict1 {}
2)dict1 = {}---把dict1指向一個空字典
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> dict1 = {} >>> dict1 {}
5、獲取字典中所有的key----dict1.keys(),返回結果在一個列表中
dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> dict1.keys() dict_keys(['name', 'age', 'weight'])
6、獲取字典中所有的value-----dict1.values(),返回結果在一個列表中
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> dict1.values() dict_values(['Tom', 21, 130])
7、獲取字典中所有的key,value,返回結果在一個列表中
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> dict1.items() dict_items([('name', 'Tom'), ('age', 21), ('weight', 130)])
8、dict1.update----增加字典的元素
>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130} >>> dict1.update({1:1, 2:2}) >>> dict1 {'name': 'Tom', 'age': 21, 'weight': 130, 1: 1, 2: 2}
練習:2個字典所有的key都一樣,請列印具有相同的鍵值,並列印鍵值對
dict1 = {1: 'a', 2: 'b', 3: 'c', 4: 100, 5: 200} dict2 = {1: 'x', 2: 'y', 3: 'z', 4: 100, 5: 200} for num1 in dict1: for num2 in dict2: if num1 == num2 and dict1[num1] == dict2[num2]: print(num1, dict1[num1]) # 執行結果 4 100 5 200