**字典:**
- [ ] 清單可以存儲大量的資料,但是如果資料量大的話,他的查詢速度比較慢,因為清單隻能順序存儲,資料與資料之間的關聯性不強。是以便有了字典(dict)這種容器的資料類型,它是以{}括起來的。
> 文法:{‘key1’ :1,‘key2’:2}
其中 key :必須是可哈希的資料類型,例如:int,bool,str,tuple。不可哈希的有:list dict set(集合),而冒号後的value 沒有要求
例如.
> 合法:
> dic = {123 :456,True : 666,’name‘ :‘張三’,(1,2,3):555}
> 非法:
> dic = { [1,2,3] : '555'} # list 是可變的,不能作為key
> dic = { {‘abc’ :123} :555} #dict是可變的,不能作為key
**- 字典的增删改查功能**
1. 增
> `dic = {}` #空字典
> `dic [ ‘name’ ] = ‘張三’`
> `dic [ 'age' ] = 23`
> `print (dic)`
> #結果 : {'name' : '張三', 'age' : 23}
> 如果dict 中沒有出現這個key,就會将 key - value 組合添加到這個字典中。
2. 删
> `dic = {123 :456,True : 666,’name‘ :‘張三’,(1,2,3):555}`
> `s = dic.pop(123)` *# pop 删除有傳回值,傳回的是被删的值*。
> `print(s)` *## 輸出為666*
> `print(dic)`
> *##輸出為 dic = {123 :456,’name‘ :‘張三’,(1,2,3):555}*
>
>
> `dic.clear()` *# 清空*
3. 改
> `dic = {123 :456,True : 666,’name‘ :‘張三’,(1,2,3):555}`
> `dic[ 'name‘ ] = ’李四‘` *#當 字典中存在’name‘這個key那麼就直接修改指派,若不存在,則添加。*
>
> `print(dic)`
> *#dic = {123 :456,True : 666,’name‘ :‘李四’,(1,2,3):555}*
> `dic.updata({'key' : 'v', 'qwe' : 789 })`
> *#當updata中的字典裡沒有dic中鍵值對(key-value)就添加到dic中,如果有就修改,類型于 清單中的 list.expend()*
4. 查
> `dic = {123 :456,True : 666,’name‘ :‘張三’,(1,2,3):555}`
> `s = dic ['name']` #通過鍵(key)來查找,如果這個鍵不存在字典中,那麼就報錯
> `print(s)` # '張三'
> `q = dic.get(True)` #通過鍵來檢視,如果鍵不在字典中,就輸出none
**字典的其他操作**
1. 擷取字典的鍵
> `dic = {123 :456,True : 666,’name‘ :‘張三’,(1,2,3):555}`
> `key_list = dic.keys()`
> `print(key_list)`
> **結果**
> dict_keys([123, True, 'name'],(1,2,3))
>
2. 擷取字典的值
> `dic = {123 :456,True : 666,’name‘ :‘張三’,(1,2,3):555}`
> `value_list = dic.values()`
> `print(value_list)`
> **結果**
dict_value(456,666,'張三',555)
3. 擷取鍵值對
> `dic = {123 :456,True : 666,’name‘ :‘張三’,(1,2,3):555}`
> key_value_list = dic.items()
> print(key_value_list)
> 結果
> dict_items([(123,456), (True,666), ('name','張三'), ((1,2,3), 555)])
>
**集合**
- [ ] 集合就像放棄了值(value),僅剩下鍵的字典一樣。鍵于鍵之間不運作重複。(如果你僅僅想知道某一個元素是否存在而不關心其他的,使用集合是個非常好的選擇。)
- [ ] 集合中的元素是必須和哈希的,但是集合本身是不可哈希的,是可以改變的
> set1 = {'1','name',2,True,[1,2,3]} # 報錯
set2 = {'1','name',2,True,{1:2}} # 報錯
set3 = {'1','name',2,True,(1,2,[2,3,4])} # 報錯
set 集合的增删改查
1. 增加
> `s = {'abc', 'efg', 'hij','lmn' }`
> `s.add('123')`
> `print(s)` #{'abc', 'efg', 'hij','lmn' ,'123'}
> `s.add('abc')`
> `print(s)` #{'abc', 'efg', 'hij','lmn' ,'123'} 重複的内容不會被添加到set集合中
>s.updata(['111','222','333'])
>print(s)#{'abc', 'efg', 'hij','lmn' ,'123', '111', '222', '333'}# 疊代更新
>
2. 删除
> `s = {'abc', 'efg', 'hij','lmn' }`
> `item = s.pop()` #随機彈出一個
> `print(s)`
> `print(item)`
> 結果
> {'lmn', 'abc', 'efg'}
> hij
> `s.remove('abc')`#直接删除元素
> `print(s)`
> 結果
> {'lmn', 'efg',}
> `s.clear()` #清空set集合,
3. 修改
> set集合中的資料沒有索引,也沒有辦法去定位一個元素,是以沒有辦法進行直接修改。
> 但是我們可以雷雨删除和添加來完成修改。
> 例如
> `s = {'abc', 'efg', 'hij','lmn' }`
> #将’abc‘ 改成’ 123‘
> `s.remove('abc')`
> `s.add('123')`
> `print(s)`
> #{ 'efg', 'hij','lmn', '123'}
4. 查詢
> #set 集合是一個可疊代對象,是以可以進行for循環
> for item in s:
> print(item) #周遊
**這就是字典和集合的幾大内容
到目前位置就是 python中的幾大資料類型。感謝點選和觀看,歡迎評論。**