1. 程式人生 > >python基礎訓練營03——字典、集合、判斷、循環

python基礎訓練營03——字典、集合、判斷、循環

返回 成員 形式 淺復制 函數 返回字典 獨立 所有 的區別

一、字典dict:

相比列表list而言,列表list像一本書,如果要查書中的某一個內容,需要把書從前往後翻一遍,直到找到想要獲取的東西;而字典dict,就像現實中的字典一樣,通過查找特定的字或者詞(鍵key),從而找到相對應的它的定義和解釋(value值)

1. 字典的標誌:{ }

2. 字典的定義:

字典由多個鍵key和與其相對應的值value,構成鍵-值對,鍵-值對也稱為項item。每項中的鍵和值之間,用冒號(:)隔開,項之間用逗號(,)隔開。整個字典用一對大括號{ }括起來。空字典不包括任何項,由兩個大括號組成——{}

  • 字典是python中唯一的內建的映射類型
  • 字典是無序的
  • 字典中的鍵key,是唯一的,值value不唯一。
  • 鍵key:可以是任何不可變類型,如:數字、字符串、元組。

3. 基本操作:增刪改查:

(1) len(d):返回字典d中,項item(鍵值對)的數量

(2) 字典名[鍵名]:返回字典中鍵相應的值

(3) 增/改:字典名[鍵名] = 值

      • 如果鍵不存在,向字典中增加一項

      • 如果鍵存在,修改字典中的這一項

註意:字典和列表不同,字典是自動添加。即:即使起初,字典的鍵並不存在,也可以為他賦值,這樣字典就會建立新的項,而無需使用append方法。

x= []
x[42] = ‘football‘
>>報錯

x = {}
x [42] = ‘football‘
x
>>{42: ‘football‘}

(4) 刪除:del 字典名[鍵名] ——刪除該鍵名的項

(5) 查詢:鍵名 in 字典名:鍵key是否在字典中。——檢查成員資格。

註意:檢查的是鍵,而不是值。

(6) dict函數:

dict()函數用於創建一個字典

 1 #創建一個空字典
 2 >>>dict()  
 3 {}
 4 
 5 
#通過關鍵字,創建字典 6 >>>dict(‘name‘ = tom, ‘age‘ = 20) 7 {name: "tom", age: 20} 8 9 #通過一個可叠代對象,創建字典 10 >>>dict((‘name‘, tom), (‘age‘, 20))

4. 字典方法:

(1) clear():

用於:清除字典中的所有項,沒有返回值(返回None)

eg:

>>>dict2 = {}
>>>dict1[age] = 20
>>>dict
[age: 20]
>>> d = dict2.clear()
>>>dict2
{}
>>>d
None

(2) copy():

返回:字典的一個淺復制

>>> x = {one: 1, two: 2, three: [1, 2, 3]}
>>> y = x.cpoy()
>>> y 
{one: 1, two: 2, three: [1, 2, 3]}
>>> y[one] = 000
>>> y
{one: 000, two: 2, three: [1, 2, 3]}
>>> x
{one: 1, two: 2, three: [1, 2, 3]}
>>> del y[two]
>>> y 
{one: 000,  three: [1, 2, 3]}
>>> x
{one: 1, two: 2, three: [1, 2, 3]}
>>> y[three][1] = 5000
>>> y
{one: 000,  three: [1, 5000, 3]}
>>> x
{one: 1, two: 2, three: [1, 5000, 3]}

可以看到,直接對字典內的“一級元素”,進行操作時,對副本y操作,原始字典x不受影響。但是當對“元素的元素”進行操作時,操作副本y,原始字典x也會發生改變。

所以說,淺拷貝,不是一個完完全全獨立的副本。

避免的方法是,使用深拷貝(deep copy),需要調用copy模塊的deepcopy函數。

直接賦值、淺拷貝、深拷貝的區別:只有涉及對象嵌套時,有區別

a、直接賦值:b = a: 賦值引用,a 和 b 都指向同一個對象。

技術分享圖片

b、淺拷貝:b = a.copy(): a 和 b 是一個獨立的對象,但他們的子對象還是指向統一對象(是引用)。

技術分享圖片

c、深拷貝:b = copy.deepcopy(a): a 和 b 完全拷貝了父對象及其子對象,兩者是完全獨立的。

技術分享圖片

3. fromkeys(seq, val):

以序列seq中的元素,作為字典中的鍵,以val作為每個鍵對應的初始值,val默認值是None

>>> dict.fromkeys([1, 2, 3])
{1: None, 2: None, 3: None}
>>> dict.fromkeys([1, 2, 3], (val))
{1: val, 2: "val", 3: val}

4. get(key, default = None):

獲取字典中,指定鍵key的值value,如果該鍵key,不存在。則返回默認值

>>> x = {1: one, 2: two, 3: three}
>>> x.get(1)
one
>>> x.get(5)
None
>>> x.get(5, 不存在)
不存在

5. key in dict

鍵名 in 字典名

判斷鍵key,是否在字典中,是,返回True;否則:返回False

>>> d = {1: "A", 2: "B", 3: "C"}
>>> 1 in d
True
>>> 5 in d
False

6. items():

items()方法,返回字典中的所有項(鍵-值對),返回的是一個叠代器對象,使用list()函數,可以使之變為列表list,以列表的方式返回,列表中的每一項都表示為(鍵,值)的形式,項在返回時沒有遵循特定的順序。

>>> d = {1:"A", 2: "B", 3: "C"}
>>> d.items()
dict_items([(1, "A"), (2, "B"), (3, "C")])  #叠代器對象
>>> list(d.items())
[(1, "A"), (2, "B"), (3, "C")]

7. keys():

keys()方法,將字典中的鍵key,以返回,返回的是一個叠代器,使用list()函數,可以使之變為列表list

>>> d = {1:"A", 2: "B", 3: "C"}
>>> d.keys()
dict_keys([1, 2, 3])  #叠代器對象
>>> list(d.keys())
[1, 2, 3]

8. values():

values()方法,將字典中的鍵value,以返回,返回的是一個叠代器,使用list()函數,可以使之變為列表list

>>> d = {1:"A", 2: "B", 3: "C"}
>>> d.values()
dict_values(["A", "B", "C"])  #叠代器對象
>>> list(d.values())
["A", "B", "C"]

9. pop(key):

pop(key),移出指定的鍵key的鍵值對,然後方法返回指定的鍵key的值value。

>>>  d = {1:"A", 2: "B", 3: "C"}
>>>  d.pop(1)
"A"            #返回了pop中的鍵,對應的value值
>>> d
{2: "B", 3: "C"}       #pop中對應的鍵值對,被從字典中刪除了

10. popitem():

字典中的 popitem()方法和列表list中的pop()方法相似,不過,由於字典是無序的,所以:popitem()彈出的是隨機的項item

11. setdefault(key, default = None):

a、setdefault() 方法和 get()類似,:

      • 如果鍵key存在於字典中,則返回對於的值value
      • 如果鍵不已經存在於字典中,則返回:參數default默認值,並且將會添加鍵key並將值value設為默認值default。

b、參數含義:

      • key: 查找的鍵的值
      • default:鍵key不存在於字典中時,設置到默認值default

c、返回值:

如果 key 在 字典中,返回對應的值。如果不在字典中,則插入 key 及設置的默認值 default,並返回 default ,default 默認值為 None

>>> dict1 = {Name: Runoob, Age: 7}
>>> dict1.setdefault("Age",None)
7
>>> dict1
 {Name: Runoob, Age: 7}

>>> dict1.setdefault("Sex")
None
>>> dict1
 {Name: Runoob, Age: 7, "Sex": None}
>>> dict1.setdefault("address", "unknow")
"unknow"
>>> dict1
 {Name: Runoob, Age: 7, "Sex": None, "address": unkown)

12. update():

update() 函數把字典參數 dict2 的 key/value(鍵/值) 對更新到字典 dict 裏。

>>> dict = {Name: Runoob, Age: 7}
>>> dict2 = {Sex: female }
>>> dict.update(dict2)
>>> dict
{Name: Runoob, Age: 7, Sex: female }

二、集合set:

集合(set)是一個無序的不重復元素序列。

三、條件判斷:

技術分享圖片

1. if判斷結構,一般形式:

if condition_1:
     statement_block_1
elif condition_2:
     statement_block_2
else:
     statement_block_3

——如果condition_1為True,則執行statement_block_1代碼塊;

——如果condition_2為False,則判斷condition_2;

——如果condition_2為True,則執行statement_block_2代碼塊;

——如果condition_2為False,則執行statement_block_3代碼塊;

註意:

  1. 每個條件後面,都要有冒號(:)
  2. 使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
  3. if語句可以嵌套

2. 常用的操作符:

技術分享圖片

邏輯操作符:and、or、not

註意:邏輯操作符,執行的是短路邏輯。

即:

(1)if conditon_A and condition_B:

先看conditon_A 是True還是False,如果是False,就直接返回False,不用再去看condition_B

(2)if conditon_A or condition_B:

同理,先看conditon_A是True還是False,如果是True,就直接返回True,不用再去判斷condition_B

3.三目運算符:

4.關於布爾值:

四、循環:

python基礎訓練營03——字典、集合、判斷、循環