字典
Python中的字典可以看做是一種鍵值對錶。其底層原理類似於Java中的HashMaP,都是散列表。其中每個數組的單元叫做bucket,每個bucket有兩個部分,一個是鍵對象的引用。一種是值對象的引用。當
字典的特點:
- 無序,只能通過鍵來找到值
- 只能存儲不可變的對象,例如整數,浮點數,字符,元組。但是列表,字典,集合這類可變對象不能作爲鍵值。
字典的創建
- 可以通過{}或者dict()來創建對象
a={‘name’=‘123’};
b={name=‘123’};
a=dict([(“name”,“gaoqi”)]) - 通過zip() 方式創建字典對象
k=[‘name’,‘age’];
v=[’‘123’’,‘123’];
a = dict(zip(k,v)); - 通過fromkeys創建值爲空的字典
a = dict.fromkeys([name’,‘boy’]);
字典元素的訪問
- 通過a[key]的方式返回,在訪問空key的時候會出現異常
- 通過get返回對象,返回一個空值
- 通過items方法列出所有的鍵值對
- 通過keys,valuse方法列出所有的鍵值,所有values值
- 通過 in 檢測鍵值是否在一個字典中,返回布爾值
“name” in a
>>>true
字典添加,修改,刪除
- a[key] = newvalue 修改key對應的values,如果鍵不存在則新增。
- update()方法將新字典的所有鍵值對全部加到舊字典對象上
- 可以用del(a[“key”])刪除對應的值。
序列解包
序列解包可以用於元組,列表,字典。序列解包可以讓我們方面的對多個變量賦值,序列解包用於字典時,默認是對鍵進行操作;如果需要對鍵值進行操作,則需要使用items();如果需要對“值”進行操作,則需要使用values()
- x,y,z = (10,20,30);即x=10,y=20…
- s = {“name”:“123”,“age”,18}; a,b,c = s即默認將鍵值賦值給a,b,c。使用items將鍵值對付給a,b,c
總結
- 作爲鍵的元素必須可以計算散列值,其中數字,字符串,元組都是可以計算的。
自定義對象需要支持下面三點:
- 支持hash對象
- 支持通過_eq_()方法檢測相等性
- 若 a== b 等於真,則hash(a) == hash(b) 也應該等於true - 字典在內存中消耗量大
- 鍵查詢速度快O(1)
- 在達到字典容量的三分之二的時候會導致次序發生變化,因此不要在遍歷時進行字典的修改
集合
集合無序可變,元素不能重複,類似於Set。可以通過set()方法將列表,元組轉化爲集合。
創建與刪除
- 通過{}後者set方法創建集合。
- remove或者clear清空集合
集合的操作
- 並集:a|b ,a.union(b)
- 交集:a&b,a.insertion(b)
- 差集:a-b,a.difference(b)
分支選擇
對於Python中,對於false,0,0.0,空值,none,空序列對象,空range對象,空迭代對象,都認爲爲false。對於其他合法的表達式都可以看做是條件表達式。但是條件表達式中不能存=