字典等同于Java
中的容器患亿。與JavaScript
中的Json
對象更相似。由鍵值對組成押逼,key
和value
用冒號:
分割步藕,每個鍵值對之間用逗號,
分割,整個字典包括在花括號{}
中挑格。鍵必須是唯一的咙冗,值不是。鍵必須不可變漂彤,所以鍵可以是數(shù)字雾消,字符串或元組,但不能是列表挫望。
1.字典的創(chuàng)建
①語法:dict = {key1 : value1, key2 : value2, key3 : value3 }
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> print(dict1)
{'name': 'yanxueer', 'age': '24'}
②通過dict()
映射其他字典或鍵/值序列對創(chuàng)建字典.
# 映射其他字典
>>> dict2 = dict(dict1)
>>> dict2
{'name': 'yanxueer', 'age': '24'}
# 通過列表和元組創(chuàng)建
>>> dict3 = dict([('name','yan'),('age','24')])
>>> dict3
{'name': 'yan', 'age': '24'}
2.獲取字典的值
①語法:dict[key]
>>> dict1["name"]
'yanxueer'
當(dāng)然也需要像列表中注意索引那樣立润,也需要保證key
的存在,否則就會出錯媳板。
>>> dict1["Age"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Age'
我們應(yīng)該盡量避免系統(tǒng)中出現(xiàn)可能會出錯的代碼桑腮。所以get()
方法是一個更好的選擇。
② get()
方法來獲取值蛉幸,如果key
存在于字典中則返回key
的值破讨,否則默認(rèn)返回None
,當(dāng)然你可以指定其在不存在時返回什么值。
>>> dict1.get("name")
'yanxueer'
>>> dict1.get("Age")
# 默認(rèn)為'None'
>>> print(dict1.get("dfd"))
None
# 設(shè)置當(dāng)不存在時返回為'1'
>>> dict1.get("Age",1)
1
3.修改和添加字典
① 修改字典可以通過key
值來獲取字典value
值之后直接修改
>>> print(dict1)
{'name': 'yanxueer', 'age': '24'}
>>> dict1["age"] = 25
>>> print(dict1)
{'name': 'yanxueer', 'age': 25}
② setdefault()
:如果 key
在 字典中奕纫,返回對應(yīng)的值添忘。
>>> dict1 = {'name': 'yanxueer'}
>>> dict1.setdefault("name")
'yanxueer'
如果不在字典中,則插入 key
及設(shè)置的default
若锁,并返回設(shè)置的default
,default
默認(rèn)值為 None
斧吐。
# 默認(rèn)值
>>> dict1.setdefault("age")
>>> dict1
{'name': 'yanxueer', 'age': None}
# 自行設(shè)置值
>>> dict1.setdefault("sex",1)
1
>>> dict1
{'name': 'yanxueer', 'age': None, 'sex': 1}
③ 也和修改字典的方式一樣又固,當(dāng)key
值存在為修改,不存在則為添加
>>> print(dict1)
{'name': 'yanxueer', 'age': 25}
>>> dict1["sex"] = "0"
>>> print(dict1)
{'name': 'yanxueer', 'age': 25, 'sex': '0'}
4.刪除字典
① del
或del()
刪除字典的鍵和字典本身
# 刪除鍵 'name'
>>> del dict1['name']
>>> dict1
{'age': 25, 'sex': '0'}
del dict
刪除字典
>>> del dict1
>>> dict1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dict1' is not defined
② clear()
清空字典
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1
{'name': 'yanxueer', 'age': '24'}
>>> dict1.clear()
>>> dict1
{}
③ pop()
:刪除字典給定鍵 key 所對應(yīng)的值煤率,返回值為被刪除的值仰冠。
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.pop("age")
'24'
>>> dict1
{'name': 'yanxueer'}
key值必須給出否則就會報錯。
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 argument, got 0
如果要刪除的 key 不存在蝶糯,則需要添加默認(rèn)值洋只,否則會報錯。
>>> dict1
{'name': 'yanxueer'}
>>> dict1.pop("age")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'
>>> dict1.pop("age",24)
24
④ popitem()
:返回并刪除字典中的最后一對鍵和值。
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.popitem()
('age', '24')
>>> dict1
{'name': 'yanxueer'}
如果字典已經(jīng)為空,卻調(diào)用了此方法,就報錯切平。
>>> dict1.clear()
>>> dict1.popitem()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
5.獲取所有的key
或者value
① keys()
:以列表返回一個字典所有的鍵
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.keys()
dict_keys(['name', 'age'])
② values()
:以列表返回字典中的所有值
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.values()
dict_values(['yanxueer', '24'])
6.字典的嵌套
上面我們知道字典的key
可以時任何不可變類型竭贩,那么它的value
可以為任意類型,包括字典本事兵扬,字典的value
為字典則就是字典的嵌套
dict = {key:{key:value}}
>>> dict1 = {"key":{"key":"value"}}
>>> dict1
{'key': {'key': 'value'}}
# 嵌套字典或者列表都是化整為零逐步分解
>>> dict1['key']['key']
'value'
字典的學(xué)習(xí)到此結(jié)束。
每日一言
好的習(xí)慣不會一天養(yǎng)成,也不會因為一天而廢止铭腕,所以克己,律己多糠。用耐心累舷,決心,平常心去對待夹孔。