05, 字典,集合

2022-09-15 07:24:10 字數 4132 閱讀 3749

1.什麼是字典

字典是以key:value的形式來儲存資料,用{}表示.   儲存的是key:value

坑: 字典儲存資料的時候是用的hash值來儲存. 演算法不能變(python的)

# 資料必須是不可變的(可雜湊). 字典的key必須是可雜湊的(不可變).

dic =

print(dic['jay']) # 周杰倫

dic['jay'] = "麻花藤"       #字典的key是不變的,可以通過key來帶出value的資訊

2.字典的增刪改查

1.增加,新增:

dic[新key] = 元素

dic =

dic["日本"] = "東京審判"  # 新key表示新增

dic['南韓'] = "釜山行

dic["日本"] = "鬼片"

setdefault()(難點)   有新增的功能,如果key是存在的,不新增,    setdefault("","")

dic =

dic.setdefault("美國", "三傻大鬧波里活")

print(dic)

2.刪除

pop(key) 主要要記得,刪除key後,同value一起刪除掉

dic =

dic.pop("郭德綱")

print(dic)     #

popitem()   隨機刪除一項,在python早期的版本,字典是無序的

dic =

dic.popitem()   # 隨機刪除一項. 在python早期版本  字典是無序的.

print(dic)   #

clear()   清空字典中的所有內容

del dic["key"]    跟pop的區別在於使用的語法:pop(key)

dic =

del dic["李安"]

print(dic)   #

3.修改

dic[老key] = 值

dic =

dic['河南'] = "燴麵" # 老key = 值

print(dic)

update()    更新字典

dic =  

dic1 =  

dic.update(dic1) # 把dic1中的內容更新到dic中. 如果key重名. 則修改替換. 如果不存 在key, 則新增.

print(dic) 

print(dic1)

4.查詢

dic[key]

dic1 =      #  直接使用key就可以拿到value 

print(dic1["趙四四"]) # keyerror: '趙四四' key不存在

get(key,值)

print(dic1.get("劉能能"))  # none 當key不存在返回none

print(dic1.get("劉能能", "沒有這個人")) # 當key不存在. 返回第二個引數. 預設第二個引數是none

setdefault("key","value")   第乙個功能是天加(當key不存在的時候).   第二個功能是查詢(根據你給的key查詢).   如果key不存在,先執行新增的操作,在使用key把對應的value查詢出來

3.字典的相關操作

1. keys() 獲取到所有的鍵

dic =  

print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不⽤管它是什麼.當 成list來⽤就⾏ 

for key in dic.keys(): 

print(key)

2. values() 獲取到所有的值

dic =

for value in dic.values(): 

print(value)

3. items() 拿到所有的鍵值對

dic =

print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科⽐')]) 這個東⻄也是list. 只不過list中裝的是tuple for key, value in dic.items(): # ?? 這個是解構 

print(key, value)

4..字典的巢狀

wf = ,

"zhuli":

},"zhuli":,

"children":[, ]

}wf['children'][1]["age"] = 2         #在children裡面新建字典

print(wf)

# print(wf['zhuli']['name'])         #輸出名字

print(wf)

# 汪峰老婆替身的名字

print(wf['wife']['tishen']['name'])

# 汪峰老婆的第二個愛好

print(wf['wife']['hobby'][1])

# 汪峰助理的第三個愛好

print(wf['zhuli']['hobby'][2])

# 汪峰的助理+10歲

wf['zhuli']['age'] = wf['zhuli']['age'] + 10

# 汪峰的老婆新增乙個愛好("導戲")

# 刪除汪峰助理的"抽菸"愛好

wf["zhuli"]["hobby"].remove("抽菸")

print(wf)

5.集合(不重要).去重複     唯一能用到的點,就是去重複

s = # 不重複的

print(s)      #

集合和字典,是沒有索引和切片的

集合中的元素是不可重複的.必須是可雜湊的(不可變),字典中的key

lst = ["麻將", "牌九", "骰子", "撲克", "骰子", "撲克", "撲克", "撲克"]

#  把列表轉化成集合  x 轉化成y型別 y()

s = set(lst)

print(s)

# 把集合變回列表

# lst = list(s)

print(lst) # 順序是亂的

空集合:set()

空元組: tuple()

空列表: list()

非空集合:

新增:add   新增    #需要記住的

s =

s.add("劉嘉玲") 

print(s)

update   迭代更新

s.update() # 迭代更新

print(s)

刪除:pop() 隨機彈乙個,隨機刪除

ret = s.pop() # 隨機刪除乙個

print(s)

print(ret)

remove()   指定刪除

s.remove("羅納爾多")

print(s)

修改 :  只能先刪除在新增

s =  

把羅納爾多修改成梅西

s.remove("羅納爾多")

s.add("梅西")

print(s)

# 迭代

# for el in s:

#     print(el)

# s1 =

# s2 =

# 交集

# print(s1 & s2)

# print(s1.intersection(s2))

# 並集

# print(s1 | s2)

# print(s1.union(s2))

# # 差集

# print(s1 - s2) # s1中特有的內容

# print(s1.difference(s2))

## # 反交集

# print(s1 ^ s2) # 兩個集合中特有的內容

# print(s1.symmetric_difference(s2))

# 集合本身是可變的資料型別 . 不可雜湊

# 集合套集合->不能互相巢狀的

# 集合中的元素必須可雜湊(不可變的)

# s =

# 如果非要集合套集合

# s = frozenset() # 不可變的資料型別(集合)

# for el in s:

#     print(el)

Task05 字典 集合和序列

可變型別與不可變型別 序列是以連續的整數為索引,與此不同的是,字典以 關鍵字 為索引,關鍵字可以是任意不可變型別,通常用字串或數值。字典是 python 唯一的乙個 對映型別,字串 元組 列表屬於序列型別。字典的定義 字典 是無序的 鍵 值 key value 對集合,鍵必須是互不相同的 在同乙個字...

06,字典與集合

字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 格式如下所示 也就是說,key就相當於字典裡的詞條而value則是詞條後面的文字 呼叫的話則是print 字典名 key 作為序列的一種,字典也支援 ...

python基礎一 05 字典

字典是乙個無序的,可以修改的,元素呈鍵值對形式,以逗號分割的,以大括號包圍的資料型別 當列表下標很多,查詢資料不方便時,我們可以使用字典。字典是python基礎資料型別當中唯一乙個對映關係的資料型別 由於字典無序,所以我們定義字典和字典生成之後的元素的順序是不同的 1.定義乙個字典 字典的每個元素由...