1. 程式人生 > >python - 字典dict

python - 字典dict

1.字典的建立
 	-1 key-value不同型別的建立
 	-2 字典的巢狀
 	-3 工廠函式
2.字典的特性
  	-1不支援索引、切片;並且字典的重複、連線是無意義的(因為key是唯一的)
  	-2成員操作符:判斷的是某個值是否為字典的key
  	-3for迴圈: 預設遍歷字典的key值
3.字典的增加
	-1增加一個元素
	-2增加多個元素
	-3setdefault新增key值
4.字典的刪除
	-1 del 關鍵字
	-2 pop刪除指定的key的key-value值
	-3 popitem刪除最後一個key-value
	-4 清空字典內容
5.字典的檢視
	-1檢視key值、檢視value值
	-2 遍歷字典
	-3 檢視指定key對應的value值(兩種方法)

1.字典的建立
-1 key-value 不同型別的建立
-2 字典的巢狀
-3 工廠函式

字典:key-value 鍵值對儲存的一種資料結構。value值可以是任意資料型別:int float long list tuple set dict

我們通過上一節集合的學習可以知道,一個空集合{}的型別是字典

d = {}
print(type(d))

<class 'dict'>

-1key-value 不同型別的建立

#字典中value為list型別

d = {				
    '王超':[18,'男','玩手機'],		
    '王凱':[18,'男','修手機']
}
print(d)		#可以檢視全部字典
print(d['王凱'])		#可以通過字典中的key,檢視key對應的value

{'王超': [18, '男', '玩手機'], '王凱': [18, '男', '修手機']}	
[18, '男', '修手機']	

#字典中value為數值型別

d2 = {
    'a':1,
    'b':2
}
print(d2)

{'a': 1, 'b': 2}

#字典中value為集合型別

d3 = {

    'a':{1,2,3},
    'b':{2,3,4}
}

print(d3)

{'a': {1, 2, 3}, 'b': {2, 3, 4}}

-2字典的巢狀

students = {
    '06163012':{
        'name':'王凱',
        'age':18,
        'score':90
    },
    '03162003':{
        'name':'管良虎',
        'age':19,
        'score':80
    }
}
#檢視字典中key為'03162003'的字典中的key為'name'所對應的value
print(students['03162003']['name'])

-3工廠函式的方式

d5 = dict(a=1,b=2)
print(d5)
    
{'a': 1, 'b': 2}

2.字典的特性
-1不支援索引、切片;並且字典的重複、連線是無意義的(因為key是唯一的)
-2 成員操作符:判斷的是某個值是否為字典的key
-3 for迴圈: 預設遍歷字典的key值

d = {
    '1':'a',
    '8':'b',
    '2':'a'
}
print(d['1'])

a

# 字典不支援索引
# print(d[0])
# 字典不支援切片
# print(d[::-1])

# 字典的重複和連線是無意義的,字典的key是唯一的

# 成員操作符:判斷的是某個值是否為字典的key
print('1' in d)
print('1' not in d)

True
False

# 字典的for迴圈 預設遍歷字典的key值
for key in d:
    print(key)

1
8
2

# 遍歷字典
for key in d:
    print(key,d[key])

1 a
8 b
2 a

3.字典的增加
-1增加一個元素
-2增加多個元素
-3setdefault新增key值

-1增加一個元素
1).如果key值存在,則更新對應的value值
2).如果key值不存在,則新增對應的key-value值

services = {

'http': 80,
'ftp': 21,
'ssh': 22
}

services['mysql'] = 3306	#'mysql'不存在,所以新增新的key-value
print(services)

輸出:{'http': 80, 'ftp': 21, 'ssh': 22, 'mysql': 3306}

services['http'] = 443	#'http'存在所以更新value值
print(services)

輸出: {'http': 443, 'ftp': 21, 'ssh': 22, 'mysql': 3306}

-2.新增多個key-value值
1).如果key值存在,則更新對應的value值
2).如果key值不存在,則新增對應的key-value值

services = {

    'http': 80,
    'ftp': 21,
    'ssh': 22
}

service_backup = {		#想新增多個元素

    'tomcat':8080,
    'https':443,
    'http':8888
}
#新增多個元素兩種方法:
services.update(service_backup)	#update()
print(services)

輸出:{'http': 8888, 'ftp': 21, 'ssh': 22, 'tomcat': 8080, 'https': 443}	#’http‘存在所以只修改value,‘tomcat’、'https'不存在則新增

services.update(flask=9000,http=999)	#或者工廠函式	'http'存在 ‘flask’新增
print(services)

輸出:{'http': 999, 'ftp': 21, 'ssh': 22, 'tomcat': 8080, 'https': 443, 'flask': 9000}

-3.setdefault新增key值:
1).如果key值存在,則不做修改
2).如果key值不存在,則新增對應的key-value值

services = {

    'http': 80,
    'ftp': 21,
    'ssh': 22
}
    

services.setdefault('http',9000)	#注意這裡'http'存在,但是不更新value
print(services)

輸出:{'http': 80, 'ftp': 21, 'ssh': 22}


services.setdefault('oracle',44575)
print(services)

輸出:{'http': 80, 'ftp': 21, 'ssh': 22, 'oracle': 44575}

4.字典的刪除
-1 del 關鍵字
-2 pop刪除指定的key的key-value值
-3 popitem刪除最後一個key-value
-4 清空字典內容

-1 del 關鍵字

services = {

    'http': 80,
    'ftp': 21,
    'ssh': 22,
    'mysql':3306
}

# 刪除'http' 80
del services['http']
print(services)
輸出:
{'ftp': 21, 'ssh': 22, 'mysql': 3306}

-2.pop刪除指定的key的key-value值
1.)如果key存在,刪除,並且返回刪除key對應的value值
2.)如果key不存在,直接報錯

services = {

    'http': 80,
    'ftp': 21,
    'ssh': 22,
    'mysql':3306
}
item = services.pop('http')
print(item)	#刪除'http' 鍵值對,並返回value:80
print(services)
輸出:
80
{'ftp': 21, 'ssh': 22, 'mysql': 3306}

3.popitem刪除最後一個key-value

services = {

'http': 80,
'ftp': 21,
'ssh': 22,
'mysql':3306
 }
item = services.popitem()	#刪除最後一個鍵值對,並返回鍵值對
print('刪除的key-value對應的是:',item)
print(services)
輸出:
刪除的key-value對應的是: ('mysql', 3306)
{'http': 80, 'ftp': 21, 'ssh': 22}

-4 清空字典內容

services.clear()
print(services)
輸出:
{}

5.字典的檢視
-1檢視key值、檢視value值
-2 遍歷字典
-3 檢視指定key對應的value值(兩種方法)

-1檢視key值、檢視value值

service = {
    'http':80,
    'mysql':3306
}

# 檢視字典裡面的所有key值
print(service.keys())
輸出:
dict_keys(['http', 'mysql'])

# 檢視字典裡面的所有value值
print(service.values())
輸出:
dict_values([80, 3306])

-2 遍歷字典

1.for迴圈

service = {
    'http':80,
    'mysql':3306
}
for k,v in service.items():		#for迴圈中兩種方法遍歷
    print(k,'---->',v)
for k in service:
    print(k,'---->',service[k])

輸出均為:
http ----> 80
mysql ----> 3306

#檢視指定key對應的value值
#key值不存在,程式會報錯

print(service['https'])		#'https'不存在,所以報錯
輸出:
  File "F:/python/python1125/day04/14_字典的修改與檢視.py", line 29, in <module>
    print(service['https'])
KeyError: 'https'

2.get方法獲取指定key對應的value值

如果key值存在,返回對應的value值
如果key值不存在,預設返回None,如果需要指定返回的值,傳值即可

service = {
    'http':80,
    'mysql':3306
}
print(service.get('https'))
輸出:None
print(service.get('https', 'key not exit'))  # 指定返回key not exit
輸出:key not exit