交换字典的key和value
生活随笔
收集整理的這篇文章主要介紹了
交换字典的key和value
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一、題目描述
二、字典介紹
1.基本用法
2.特點
3.常用方法
三、解析
四、源碼
一、題目描述
編寫一個函數,交換指定字典的key和value
二、字典介紹
1.基本用法
對于初學者而言,應牢記字典包含多個 key-value 對,而 key 是字典的關鍵數據,因此程序對字典的操作都是基于 key 的。基本操作如下:通過 key 訪問 value 。通過 key 添加 key-value 對。通過 key 刪除 key-value 對。通過 key 修改 key-value 對。通過 key 判斷指定 key-value 對是否存在。通過 key 訪問 value 使用的也是方括號語法,就像前面介紹的列表和元組一樣,只是此時在方括號中放的是 key,而不是列表或元組中的索引。2.特點
字典中所有元素都是一個key-value對,key不允許重復,value可以重復 字典中的元素是無序的 —— —— ——沒有下標,取值通過方法獲取 字典是可變的,字典中key必須是不可變對象 —— —— ——增刪改查 字典也可以根據需要動態地伸縮 字典會浪費較大的內存,是一種 以空間換時間的數據結構3.常用方法
clear()方法:clear() 用于清空字典中所有的 key-value 對,對一個字典執行 clear() 方法之后,該字典就會變成一個空字典 代碼如下:cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}print(cars) # {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}# 清空cars所有key-value對cars.clear()print(cars) # {}get()方法:get() 方法其實就是根據 key 來獲取 value,它相當于方括號語法的增強版,當使用方括號語法訪問并不存在的 key 時,字典會引發 KeyError 錯誤;但如果使用 get() 方法訪問不存在的 key,該方法會簡單地返回 None,不會導致錯誤 代碼如下:cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}# 獲取'BMW'對應的valueprint(cars.get('BMW')) # 8.5print(cars.get('PORSCHE')) # Noneprint(cars['PORSCHE']) # KeyErrorupdate()方法:update() 方法可使用一個字典所包含的 key-value 對來更新己有的字典。在執行 update() 方法時,如果被更新的字典中己包含對應的 key-value 對,那么原 value 會被覆蓋;如果被更新的字典中不包含對應的 key-value 對,則該 key-value 對被添加進去。 代碼如下:cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}cars.update({'BMW':4.5, 'PORSCHE': 9.3})print(cars)從上面的執行過程可以看出,由于被更新的 dict 中己包含 key 為“BMW”的 key-value 對,因此更新時該 key-value 對的 value 將被改寫;但如果被更新的 dict 中不包含 key 為“PORSCHE”的 key-value 對,那么更新時就會為原字典增加一個 key-value 對。items()、keys()、values()方法:items()、keys()、values() 分別用于獲取字典中的所有 key-value 對、所有 key、所有 value。這三個方法依次返回 dict_items、dict_keys 和 dict_values 對象,Python 不希望用戶直接操作這幾個方法,但可通過 list() 函數把它們轉換成列表。 代碼如下:cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}# 獲取字典所有的key-value對,返回一個dict_items對象ims = cars.items()print(type(ims)) # <class 'dict_items'># 將dict_items轉換成列表print(list(ims)) # [('BMW', 8.5), ('BENS', 8.3), ('AUDI', 7.9)]# 訪問第2個key-value對print(list(ims)[1]) # ('BENS', 8.3)# 獲取字典所有的key,返回一個dict_keys對象kys = cars.keys()print(type(kys)) # <class 'dict_keys'># 將dict_keys轉換成列表print(list(kys)) # ['BMW', 'BENS', 'AUDI']# 訪問第2個keyprint(list(kys)[1]) # 'BENS'# 獲取字典所有的value,返回一個dict_values對象vals = cars.values()# 將dict_values轉換成列表print(type(vals)) # [8.5, 8.3, 7.9]# 訪問第2個valueprint(list(vals)[1]) # 8.3從上面代碼可以看出,程序調用字典的 items()、keys()、values() 方法之后,都需要調用 list() 函數將它們轉換為列表,這樣即可把這三個方法的返回值轉換為列表。pop方法:pop() 方法用于獲取指定 key 對應的 value,并刪除這個 key-value 對。 代碼如下:cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}print(cars.pop('AUDI')) # 7.9print(cars) # {'BMW': 8.5, 'BENS': 8.3}popitem()方法:popitem() 方法用于隨機彈出字典中的一個 key-value 對。此處的隨機其實是假的,正如列表的 pop() 方法總是彈出列表中最后一個元素,實際上字典的 popitem() 其實也是彈出字典中最后一個 key-value 對。由于字典存儲 key-value 對的順序是不可知的,因此開發者感覺字典的 popitem() 方法是“隨機”彈出的,但實際上字典的 popitem() 方法總是彈出底層存儲的最后一個 key-value 對。 代碼如下:cars = {'AUDI': 7.9, 'BENS': 8.3, 'BMW': 8.5}print(cars)# 彈出字典底層存儲的最后一個key-value對,彈出也就是相當于刪除了,再輸出原字典時,最后一個key-vaule已經沒有了print(cars.popitem()) # ('AUDI', 7.9)print(cars) # {'BMW': 8.5, 'BENS': 8.3}setdefault()方法:setdefault() 方法也用于根據 key 來獲取對應 value 的值。但該方法有一個額外的功能,即當程序要獲取的 key 在字典中不存在時,該方法會先為這個不存在的 key 設置一個默認的 value,然后再返回該 key 對應的 value??傊?#xff0c;setdefault() 方法總能返回指定 key 對應的 value;如果該 key-value 對存在,則直接返回該 key 對應的 value;如果該 key-value 對不存在,則先為該 key 設置默認的 value,然后再返回該 key 對應的 value。 代碼如下:cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}# 設置默認值,該key在dict中不存在,新增key-value對print(cars.setdefault('PORSCHE', 9.2)) # 9.2print(cars)# 設置默認值,該key在dict中存在,不會修改dict內容print(cars.setdefault('BMW', 3.4)) # 8.5print(cars)fromkeys()方法:fromkeys() 方法使用給定的多個 key 創建字典,這些 key 對應的 value 默認都是 None;也可以額外傳入一個參數作為默認的 value。該方法一般不會使用字典對象調用(沒什么意義),通常會使用 dict 類直接調用。 代碼如下:# 使用列表創建包含2個key的字典a_dict = dict.fromkeys(['a', 'b'])print(a_dict) # {'a': None, 'b': None}# 使用元組創建包含2個key的字典b_dict = dict.fromkeys((13, 17))print(b_dict) # {13: None, 17: None}# 使用元組創建包含2個key的字典,指定默認的valuec_dict = dict.fromkeys((13, 17), 'good')print(c_dict) # {13: 'good', 17: 'good'}使用字典格式化字符串在格式化字符串時,如果要格式化的字符串模板中包含多個變量,后面就需要按順序給出多個變量,這種方式對于字符串模板中包含少量變量的情形是合適的,但如果字符串模板中包含大量變量,這種按順序提供變量的方式則有些不合適??筛臑樵谧址0逯邪?key 指定變量,然后通過字典為字符串模板中的 key 設置值。 代碼如下:# 字符串模板中使用keytemp = '教程是:%(name)s, 價格是:%(price)010.2f, 出版社是:%(publish)s'book = {'name':'Python基礎教程', 'price': 99, 'publish': 'C語言中文網'}# 使用字典為字符串模板中的key傳入值print(temp % book)book = {'name':'C語言小白變怪獸', 'price':159, 'publish': 'C語言中文網'}# 使用字典為字符串模板中的key傳入值print(temp % book)三、解析
?首先通過items()方法去獲取所有的鍵值對,然后再把其賦值到一個新的字典中,這樣就形成了對換;因為字典的存儲是用的hash函數存儲,存儲是無序的;賦值的時候相當于給新的字典的key賦值value,但此時的值與原字典相反,因為將原key和value的位置進行了調換。
四、源碼
def exchange(x):mydict_new = {}for key, val in mydict.items():#items獲取所有的鍵值對,先取出來的為關鍵字,后取出來的為鍵值mydict_new[val] = key#賦值給新的字典,字典是內部用的是hash表存儲,是無序的,查找時是通過key查找value所在的位置return mydict_newif __name__ == '__main__':mydict = {'張三':23,'李四':33,'王五':44}print(exchange(mydict))總結
以上是生活随笔為你收集整理的交换字典的key和value的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nuxt添加.html,Nuxt内导航栏
- 下一篇: 单链表入门(二)