2.資料型態:dict與set#
群集資料型別:dict#
dict是dictionary的略稱,字典這種資料型態的組成是一群成對的key與value。
key在字典裡不能重複,通常會使用字串或tuple來當作key。至於value則沒有什麼限制。
dict跟後面等等會介紹的set一樣,都是沒有順序的,不能使用切片。
建立dict
以下兩種方法都可以建立dictionary。
# key: value
a_dict = {'a': 1, 'b': 2, 'c':3}
# key=value
a_dict = dict(a=1, b=2, c=3)
dict的基本用法#
dict的基本用法
利用key來取出value:
a_dict['a']
1
利用key來取出value的另一種方法:
a_dict.get('a')
1
若key值不存在的話,用這個方法python會丟出錯誤。
a_dict['d']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[4], line 1
----> 1 a_dict['d']
KeyError: 'd'
若key值不存在的話,用.get()
方法python不會丟出錯誤。
a_dict.get('d') # 不會回傳任何東西
.get()
方法內的參數是當key值不存在時,預設的value。
a_dict.get('d', 'missing')
'missing'
dict 新增與刪除項目#
dict新增項目
新增項目的方法有兩種:
a_dict = {'a': 1, 'b': 2, 'c':3}
# 第一種
a_dict['d'] = 4
print(a_dict)
# 第二種
a_dict.update({'e': 5})
print(a_dict)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
dict刪除項目
a_dict = {'a': 1, 'b': 2, 'c':3}
方法1
a_dict.pop('a')
1
print(a_dict)
{'b': 2, 'c': 3}
key值若不存在會拋錯。
a_dict.pop('d')
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[11], line 1
----> 1 a_dict.pop('d')
KeyError: 'd'
.pop()
方法中可以塞預設值。
a_dict.pop('d', 'Nothing happened')
'Nothing happened'
print(a_dict)
{'b': 2, 'c': 3}
方法2
del a_dict['b']
print(a_dict)
{'c': 3}
dict中的key值不能重複
當要新增項目時,dict中對應的key值若已經存在,會以新的為準。
a_dict = {'a': 1, 'b': 2, 'c':3}
b_dict = {'b': 'ni', 'c': 'san', 'd': 'shi'}
a_dict.update(b_dict)
print(a_dict)
{'a': 1, 'b': 'ni', 'c': 'san', 'd': 'shi'}
dict 操作#
取得dict的內容
a_dict = {'a': 1, 'b': 2, 'c':3}
# 取得key的list
list(a_dict.keys())
['a', 'b', 'c']
# 取得value的list
list(a_dict.values())
[1, 2, 3]
# 取得key跟value的list,注意到其中是一個一個tuple
list(a_dict.items())
[('a', 1), ('b', 2), ('c', 3)]
取得dict長度
a_dict = {'a': 1, 'b': 2, 'c':3}
# 長度指的是key的數量
len(a_dict)
3
檢查key是否存在
a_dict = {'a': 1, 'b': 2, 'c':3}
'c' in a_dict
True
用{**a, **b}結合dict
dict_1 = {'a': 'apple', 'b': 'beach', 'c': 'cat'}
dict_2 = {'d': 'dog', 'e': 'egg', 'f': 'flower'}
dict_all = {**dict_1, **dict_2}
print(dict_all)
{'a': 'apple', 'b': 'beach', 'c': 'cat', 'd': 'dog', 'e': 'egg', 'f': 'flower'}
群集資料型別:set#
set是具有不重複元素的一種資料型別。
操作跟數學上的集合很像。
set沒有順序的概念,因此不支援切片。
建立set
a = {1,2,3}
a = set([1,2,3])
set元素操作#
加入元素至set
a = {1,2,3}
a.add(4)
print(a)
{1, 2, 3, 4}
.add()已經存在的元素不會改變set。
a.add(1)
print(a)
{1, 2, 3, 4}
刪除set中的元素
a = {1,2,3}
a.remove(1)
print(a)
{2, 3}
set 操作#
取得set的長度
a = {1,2,3}
len(a)
3
set的運算
a = {1,2,3}
b = {3,4,5}
c = {1,2,3,4,5}
交集
a & b
{3}
a.intersection(b)
{3}
聯集
a | b
{1, 2, 3, 4, 5}
a.union(b)
{1, 2, 3, 4, 5}
差集
取差集的順序會有影響。
a - b
{1, 2}
a.difference(b)
{1, 2}
b - a
{4, 5}
b.difference(a)
{4, 5}
取互斥的元素
a ^ b
{1, 2, 4, 5}
a.symmetric_difference(b)
{1, 2, 4, 5}
判斷是否為子集合
a <= b
False
a.issubset(b)
False
判斷是否為真子集
a < b
False
判斷是否為超集合
a >= b
False
a.issuperset(b)
False
判斷是否為真超集
a > b
False