【字典dict】
1.字典的概念:
1.字典是一種可變的容器,可以存放任意類型的數據
2.字典中的每一個數據都是用鍵(key)進行索引,而不像序列可以用下標進行索引
3.字典的數據沒有先後順序關係,字典的存儲是無序的
4.字典中的數據以鍵(key)-值(value)對進行映射存儲
5.字典的鍵不能重複,【且只能用不可變類型作爲字典的鍵】
2.字典的字面值表示方式:
用{}括起來,以冒號(:)分隔鍵-值對,各鍵值對用分號分隔開
3.創建字典
1.創建空字典:
d = {}
2.創建非空字典:
d = {'name':'tarena','age':15}
d = {'姓名':'張三'}
d ={1:'一',2:'二']
4.字典的構造函數:
dict() 創建一個空字典,等同於{}
dict(iterable) 用可迭代對象初始化一個字典
dict(**kwargs) 關鍵字傳參形式生成一個字典
示例:
d = dict()
d = dict([('name','tarena'),('age',15)])
d = dict(name = 'tarena',age = 15)
d = dict(('AB','CD')) # d = {'A':'B','C':'D'} #元組是可迭代對象
5.字典的鍵索引:
用[]運算符可以獲取字典內的'鍵'所對應的'值'
語法:
字典[鍵]
獲取數據元素:
d = dict(name = 'tarena',age = 15)
print(d['age']) # 15
6.添加修改字典元素:
字典[鍵] = 表達式
示例:
d = {}
d['name'] = 'tarena' # 創建一個新的鍵值對
d['age'] = 15 #創建鍵值對
d['age'] = 22 #修改鍵值對
7.del語句刪除字典的元素:
語法:
del字典[鍵]
示例:
d = {'name':'zxl','age':22}
d['age']
print(d) # d = {'name':'zxl'}
d['name']
print(d) # {}
8.字典的in / not in 運算符:
可以用in運算符來判斷一個’鍵‘是否存在於字典中,如果存在則返回Ture,否則返回False
not in 與 in 相反
示例:
d = {'a':1,'b':2}
'a' in d # True
1 in d # False
9.字典的迭代訪問:
字典是可迭代對象,字典只能對鍵進行迭代訪問
d = {'name':'tarena','(2001,2,1)':'生日'}
for i in d:
print(i) #返回的是鍵
10.可以用於字典的內建函數:
len(x) 返回字典鍵值對的個數
max(x) 返回字典的鍵的最大值
min(x) 返回字典的鍵的最小值
sum(x) 返回字典所有鍵的和
any(x) 真值測試,只對鍵進行測試,如皋其中一個鍵爲True,結果爲True
all(x) 真值測試,全部鍵爲True,結果才爲True
11.字典的方法:
dict.fromkeys()用於創建並返回一個新的字典,它有兩個參數,第一個參數是字典的鍵,第二個參數是可選的,是傳入鍵對應的值。
如果不提供,默認是None
示例:
d = {}
d.fromkeys((1,2,3)) # {1:None,2:None,3:None}
d = {}
d.fromkeys((1,2,3),('one','two','three')) # {1:('one','two','three'),2:('one','two','three')]
dict.clear() 清空字典
dict.pop(key) 移除鍵,同時返回對應的值
dict.popitem() 彈出一個項(隨機彈出,因爲字典是無序的)如果字典爲空再用此方法則拋出異常
dict.copy() 返回字典的副本,只複製一層(淺拷貝)
dict.update(dict2) 將字典dict2合併到dict中,如果鍵相同,則此鍵的值取dict2的值作爲新值
dict.get(key,default) 返回鍵key所對應的值,如果沒有鍵,則返回default(自己定義,比如'木有')(默認返回一個None,表示啥都沒找到)
dict.setdefault() 和get方法相似,但是setdefault()在字典裏找不到相應的鍵會字典添加(在後面添加一個None)
>>> d
{1: 'one', 2: 'two', 3: 'three'}
>>> d.setdefault(3)
'three'
>>> d.setdefault(5)
>>> d
{1: 'one', 2: 'two', 3: 'three', 5: None}
dict.keys() 返回可迭代的dict_keys集合對象
dict.values() 返回可迭代的dict_value值對象
dict.items() 返回可迭代的dict_items對象
12.字典的推倒式:
字典的推倒式是用可迭代對象依次生成字典內元素的表達式
語法:
{鍵表達式:值表達式 for 變量 in 可迭代對象 [if 真值表達式]}
注:[]的內容可以省略
示例:
d = {x:x**2 for x in range(10)}
13.字典 vs 列表:
1.都是可變的容器
2.索引方式不同(列表用整數下標索引,字典用鍵索引)
3.字典的查找速度可能快於列表(重要,當數據很大時)
4.列表的存儲是有序的,字典的存儲是無序的