Python 集合(Set)、字典(Dictionary)


 

集合(Set)

集合是無序的,無序也就沒有索引,不能進行索引相關的操作。無序,python解釋器就不能通過索引(位置)區分集合中的相同元素,所以集合中不能有相同的元素。

集合用大括號{  }表示。

集合中元素的數據類型可以不同,但集合中不能嵌套列表、元組、集合、字典。

a={1,1,3}
print(a)  #{1,3}  會自動去掉重復的元素

a={1,"ok"}   #數據類型可以不同
print(a)   #{1, 'ok'}

a={1,"ok",[1,2]}   #報錯  集合中元素的數據類型可以不同,但集合中不能嵌套列表、元組、集合、字典。
print(a)

 

集合可以使用in、not  in進行成員判斷。

 

 

集合之間可以進行集合運算

a={1,2,3}
b={1,2,6}

print(a|b)  #求並集  {1, 2, 3, 6}
print(a&b)  #求交集   {1, 2} 
print(a-b)  #求差集(a中有,b中沒有)  {3}
print(a^b)  #並集減去交集,即把a、b獨有的元素組成一個集合   {3, 6}

|   是python的邏輯或,a或b,即並集

&  是python的邏輯與,a且b,a、b中都要有,即交集

 

 

python的邏輯運算符

  • and、&    與
  • or、|    或
  • not   非(python中,邏輯非不能用!表示)

 

 

 

 

字典(Dictionary)

字典是無序的。

字典中一個鍵值對就是一個元素。因為是用key來標識元素,所以同一個字典中,key不能相同(不會報錯,但后面的值會覆蓋前面的值)。

字典中的key、value的數據類型可以不同,但key必須是不可變的數據類型,比如數字、字符串、元組。

字典用大括號{  }表示。

a={"name":"張三","age":18}  #key、value之間冒號分隔,鍵值對之間逗號分隔

a={1:"張三","age":18,"score":(100,90,99)}  #字典中的key可以是不同的類型,但key必須是不可變的數據類型。value可以是任何類型。

a={"name":"張三","name":"李四"}  #key不能相同,相同時,后面的值會覆蓋前面的值
print(a)   #{'name': '李四'}

 

 

可通過key來操作字典中的元素

a={"name":"張三","age":12,}

print(a["name"])   #張三   如果key是數字、元組,以  字典變量名[數字|元組]  的方式操作,key不加引號,加引號表示key是字符串。

a["age"]=10   #如果key已存在,這是修改對應的值
a["score"]={"Chinese":90,"math":100}   #如果key不存在,這是往字典中添加一個鍵值對
print(a)  #{'name': '張三', 'age': 10, 'score': {'Chinese': 90, 'math': 100}}

del a["score"]  #刪除一個鍵值對
print(a)   #{'name': '張三', 'age': 10}

a.clear()  #清空字典,會刪除所有的鍵值對,只保留一個空字典
print(a)   #{}

del a   #刪除a這個變量
print(a)   #報錯

 字典通過key來標識、區分元素,不需要索引,所以字典是無序的。

 

 

字典的常用函數

函數 描述

dict.keys()

獲取所有的key
dict.values() 獲取所有的value
dict.items() 獲取所有的鍵值對
   
dict1.update(dict2)   把dict2中的鍵值對全部添加到dict1中,dict1會改變,dict2不變。此函數返回值是void。
dict.copy()

復制,返回dict的一個副本。

dict.clear() 清空字典,刪除所有鍵值對,只保留一個空字典
   
dict.has_key(key) 檢測字典中是否有指定的key,返回bool值
dict.get(key,default)  獲取key對應的value,若key不存在,返回指定的默認值
dict.setdefault(key[,default])     和get(key,default)一樣,只不過key不存在時,會先往字典中添加這個鍵值對,然后返回值
   
dict.pop(key[,default])  刪除key對應的鍵值對,並返回這個鍵值對中的value。若key不存在,返回設置的default的值。
dict.popitem()  刪除字典中的最后一個鍵值對,並返回這個鍵值對中的value。雖然字典是無序的,但這個函數刪除的確實是最后添加的一個鍵值對。
   
dict.fromkeys(seq[,value])        

創建並返回一個新字典。seq是序列,使用序列中的元素作為key,value可選,為所有鍵值對設置默認value。

這個函數比較特殊,前面的dict都是字典類的實例,調用的是實例方法。

在python中,dict是一個類,表示字典。fromkeys()是dict類的靜態方法,直接通過類名調用。

 字典是可變的,如果以上操作修改了字典,字典本身會改變。

 

 

 copy()使用示例:

dict1={"name":"張三","age":18,"score":(100, 90, 99)}
dict2=dict1.copy()
print(dict2)  #{'name': '張三', 'age': 18, 'score': (100, 90, 99)}

 

 

 

setdefault()使用示例:

dict={"name":"張三"}
print(dict.setdefault("age",18))   #18
print(dict)   #{'name': '張三', 'age': 18}

 

 

dict.fromkeys(seq[,value])使用示例:

a=[1,2,3]   #列表
b=(1,2,3)  #元組
c="ok"  #字符串

#參數必須是序列



print(dict.fromkeys(a))  #{1: None, 2: None, 3: None}
print(dict.fromkeys(b))  #{1: None, 2: None, 3: None}
print(dict.fromkeys(c))  #{'o': None, 'k': None}

#以序列中的元素作為key,字符串的元素是單個字符。
#為設置值時,默認值是None



print(dict.fromkeys(a,"ok"))  #{1: 'ok', 2: 'ok', 3: 'ok'}

#設置的值是所有key的值。
#設置的值可以是任何類型

 

 

 

 

 

小結

1、python中,序列(字符串、列表、元組)是有序的,集合、字典都是無序的。

有序的就有索引,可進行索引相關的操作,可用索引來標識、區分元素,所以元素可重復。

集合中不能有重復的元素,字典中不能有重復的key。

 

 

2、數字、字符串、元組是不可變的,對它們操作,返回的往往是副本,本身不會改變。

列表、集合、字典都是可變的,對它們操作,往往就是對本身進行操作。

(python也提供了不可變的集合)

 

 

3、列表用[]表示,元組用()表示,列表、元組都有索引、可進行索引相關操作,區別是列表可改變,元組不可改變。

使用內置函數list()、tuple()可實現列表、元組的相互轉換。

可以先把列表轉換為元組,來保護列表中的元素不被修改,操作完再轉換回列表。

可以把元組轉換為列表,達到修改元組的目的,操作完再轉換回元組。

 

 

4、集合、字典都是用{}表示,{}表示空字典,空集合要使用set()來創建。

 

 

5、字符串、列表、元組、集合、字典都具有多個元素,它們都可以使用python內置函數 len(x) 來獲取x的元素個數。

 

 

6、類型轉換

函數 描述

int(x [,base])

將x轉換為一個[base進制的]整數,base可選,默認為10

float(x)

將x轉換為一個浮點數

complex(real [,imag])

創建一個復數,缺省imag時,虛部默認為0

str(x)

將 x 轉換為字符串

tuple(s)

將序列 s 轉換為一個元組

list(s)

將序列 s 轉換為一個列表

set(s)

轉換為集合

frozenset(s)

轉換為不可變集合

chr(x)

將整數(ASCII碼值)轉換為字符

ord(x)

將字符轉換為數值(ASCII碼值)

返回的均是副本,不會修改參數本身。

格式:目標類型(需要轉換的變量/值)

 

 字符、ASCII碼值轉換示例:

print(chr(65))  #A
print(ord("A"))  #65

 

 

 

7、使用python的內置函數eval(str)可執行字符串中的python語句

eval("print(1)")  #輸出1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM