資料結構-集合(set)和字典(dict)
阿新 • • 發佈:2019-02-05
前序:
set()表示集合,是一個無序不重複元素的集,特點是消除重複元素,集合物件支援union(聯合),intersection(交),difference(差)和sysmmetric dirrerence(對稱差集)等數學運算。
dict()表示字典,是以(kek,value)這樣的鍵值對來儲存的。
set(集合)
下面就以具體的例項來學習set相關的操作。
set的結構為{'c','c++','python'}
,是以{ }來包含其中的元素,並且具有去重的功能。
>>>s = {'apple','orange','apple','pear','banana' ,'orange'}
>>>print(s)
>>>{'apple','orange','banana','pear'}
這裡看到列印的結果是直接去重之後的,但是細心的話應該已經發現,集合中的元素順序並不是按照建立時的順序列印,可見set是無序的。
建立一個集合
可以直接呼叫set的建構函式來建立一個空的集合
>>>s = set()
是不是在想可不可以這樣建立一個空的集合?
>>>s = {}
#這樣是不行的,因為dict(字典)也是通過{}來包含子元素的,所以系統預設這樣創建出的是一個空的字典
#但是如果是這樣,就是建立了含有一個元素的集合
>>>s = {'apple'}
#因為如果是字典,它的單個元素格式為
>>>s = {'蘋果':'apple'}
判斷是否存在
可以採用in關鍵字來判斷一個元素是否在一個集合裡,返回值是一個bool值
>>>s = {'apple','orange','apple','pear','banana','orange'}
>>>'origin' in s
>>>True
>>>'peach' in s
>>>False
並、交、差、補
通過下面這幾個例子,來理解set的數學運算
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # a去重後獨有的元素
{'a', 'r', 'b', 'c', 'd'}
>>> b # b去重後獨有的元素
{'a','c','l','m','z'}
>>> a - b # a 和 b的差集
{'r', 'd', 'b'}
>>> a | b # a 和 b的並集
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # a 和 b的交集
{'a', 'c'}
>>> a ^ b # a 和 b的補集
{'r', 'd', 'b', 'm', 'z', 'l'}
集合推導式
>>> a = {x for x in 'abcdabcdabcd' if x not in 'ab'
>>> a
{'c','d'}
dict(字典)
序列是以連續的整數為索引,字典是以關鍵字為索引,關鍵字是任意不可變型別,通常是字串或數值,如果元組中只包含字串和數字,也可以作為關鍵字。
列表不可以做關鍵字,因為列表可以用索引、切割或者append()和extend()等方法改變。
字典的結構為:用{ }來包含所有的元素如:{'蘋果':'apple','香蕉':'banana'}
,key-value之間用 : 分割,鍵值對和鍵值對之間用 , 分隔。
建立字典
建立空的字典
#通過建構函式
>>>d = dict()
#直接通過符號
>>>d = {}
建立非空字典
#通過建構函式,直接從key-value對中建立字典
>>>d = dict([('蘋果','apple'),('香蕉','banana')])
#直接通過符號建立
>>>d = {'蘋果':'apple','香蕉':'banana'}
增加一個鍵值對
# 如果'橘子'這個key值不存在,則向字典中增加該鍵值對
# 如果'橘子'這個key值存在,則更新它的value為=後面的新值
>>>d['橘子'] = 'orange'
刪除一個鍵值對
# 採用dict內建的pop方法
# 該key值存在,則刪除該鍵值對,返回其value值
>>>d.pop('蘋果')
'apple'
# 該key值不存在,KeyError錯誤
# 也可以採用del關鍵字
>>>del d['蘋果']
查詢key對應的value
#對應key存在,則返回value
>>>d['蘋果']
'apple'
#key值不存在,則報KeyError的錯誤
獲取所有關鍵字或值
#通過dict.keys()可以拿到字典中所有的key值
>>>list(d.keys())
['蘋果','香蕉']
#通過dict.values()可以拿到所有的值
>>>list(d.values())
['apple','banana']
對字典進行排序
sorted(d.keys())
判斷key是否存在
>>>'蘋果' in d
True
>>>'菠蘿' in d
False
遍歷字典
# 使用items方法,得到對應的key-value值
>>>d = {'蘋果':'apple','香蕉':'banana'}
>>>for k,v in d.items():
print(k,v)
dict items([('蘋果','apple'),('香蕉','banana')])
以上即使關於集合和字典的一些知識點。