字典也是一種容器類型的數(shù)據(jù)類型(序列),存的數(shù)據(jù)是以鍵值對的形式出現(xiàn)的,字典中的元素全部都是鍵值對
字典是可變的(可是增刪改),但是是無序的(不能使用下標(biāo))
*鍵是唯一的
鍵值對: 鍵:值(key:value); 鍵值對中key是形式,值才是真正要存的內(nèi)容
鍵:理論上可以是任何不可變的數(shù)據(jù)類型,但是實際開發(fā)的時候一般使用字符串作為key
值:可以是任意數(shù)據(jù)類型數(shù)據(jù)
1.聲明一個字典
"""a.創(chuàng)建一個字典變量"""
dict1 = {} # 創(chuàng)建一個空的字典
print(type(dict1))
dict2 = {'a': 1, 'b': 'abc', 10: [1, 2, 3], ('a', 'b'): 'abc'}
print(dict2)
dict2 = {'a': 1, 'b': 'abc', 'a': 100}
print(dict2)
"""b.將其他數(shù)據(jù)類型轉(zhuǎn)換成字典"""
dict3 = dict([(1, 2), (2, 3)]) # 了解
print(dict3)
2.字典的增刪改查
"""a.查:獲取字典的元素的值
字典獲取元素的值是通過key來獲取的
字典[key]
"""
person = {'name': '路飛', 'age': 17, 'face': 90}
print(person['name'], person['face'])
# print(person['aaa']) # 如果key不存在,會報KeyError
"""
字典.get(key)
"""
print(person.get('name'))
print(person.get('aaa')) # 如果key不存在,返回None
"""
注意:如果key值確定存在,使用[]語法去獲取值。不確定key值是否存在才使用get方法去獲取值
"""
"""b.增加元素\修改元素
通過key獲取字典元素,然后賦值。當(dāng)key本身就存在的時候,就
是修改元素的值;不存在的時候就是給字典添加鍵值對
"""
person['height'] = 1.8
print(person)
person['age'] = 18
print(person)
"""c.刪除: 刪除的是鍵值對
del 字典[key] ---- 注意:key如果不存在會報錯
"""
del person['face']
print(person)
"""
字典.pop(key) --- 會返回被刪除的鍵值對對應(yīng)的值
"""
age = person.pop('age')
print(person, age)
3.相關(guān)的數(shù)組屬性(了解)
字典.keys():獲取字典所有的key,返回值的類型是dict_keys,但是可以把它當(dāng)成列表來使用
字典.values():獲取字典所有的值(value)
字典.items(): 將字典中所有的鍵值對轉(zhuǎn)換成一個一個的元
組,key作為元組的第一個元素,value作為元組的第二個元素
student_dict = {'name': '張三', 'study_id': "py1805001",
'scores': {'english': 60, 'math': 100}}
keys = student_dict.keys()
print(keys, type(keys))
# 遍歷獲取每個key
for key in keys:
print(key)
print(student_dict.values())
print(student_dict.items())
4.遍歷字典
a.直接遍歷字典獲取到的是所有的key(推薦使用)
for key in student_dict:
print(key, student_dict[key])
b.遍歷直接獲取到key和value(不推薦使用)(增加運算負(fù)荷)
for key, value in student_dict.items():
print(key, value)
for value in student_dict.values():
print(value)
5.列表中有字典、字典中有字典、字典中有列表
聲明一個變量,作用是用來存儲一個班級的學(xué)生的信息。其中學(xué)生的信息包括姓名、性別、年齡、電話
至少存三個學(xué)生信息
class1 = [
{'name': '張三', 'age': 23, 'sex': '男', 'tel': '15300022777'},
{'name': '李四', 'age': 25, 'sex': '女', 'tel': '12779922'},
{'name': '王二麻子', 'age': 20, 'sex': '男', 'tel': '12553'}
]
class1 = {
'name': 'py1805',
'address': '19-1',
'students':[
{'name': '張三', 'age': 18},
{'name': '李四', 'age': 28},
{'name': '王五', 'age': 20},
]
}
6.其他操作
1.fromkeys()
dict.fromkeys(序列, value):創(chuàng)建一個新的字典,序列中的元素作為key,value作為值
# new_dict = dict.fromkeys('abc', '100')
# new_dict = dict.fromkeys(range(10), '100')
new_dict = dict.fromkeys(['abc', 'dcc', '123'], '100')
print(new_dict)
2.in
key in 字典: 判斷字典中是否存在指定的key
dog_dict = {'color': 'white', 'age': 3, 'type': '土狗'}
print('color' in dog_dict) # 判斷的是鍵是否存在
print('white' in dog_dict)
3.update
字典1.update(字典2): 使用字典2的鍵值對去更新字典1中的鍵值對。如果字典2中對應(yīng)鍵值對在字典1中不存在,就添加。存在就更新
dict1 = {'1': 'a', '2': 'b'}
dict1.update({'1': 'aaa', '3': 'bbb'})
print(dict1)