python 字典相關操作

來源:互聯網
上載者:User

標籤:hub   err   圖片   改變   產生   情況   --   info   一點   

字典字典的增刪改查

字典的建立方式:

# 建立字典類型info = {    ‘name‘:‘李白‘,    ‘age‘:‘25‘,    ‘sex‘:‘男‘}msg = {    ‘user01‘:‘Longzeluola‘,    ‘user02‘:‘xiaozemaliya‘,    ‘user03‘:‘cangjingkong‘}

 

字典儲存資料的時候,採取的是key:value的形式,是一組無序的儲存。在需要的時候通過key就能夠快速的擷取value。

msg = {    ‘user01‘:‘Longzeluola‘,    ‘user02‘:‘xiaozemaliya‘,    ‘user03‘:‘cangjingkong‘}print(msg[‘user01‘])  # Longzeluola

 

字典的值可以根據key值擷取並且變更。

msg = {    ‘user01‘:‘Longzeluola‘,    ‘user02‘:‘xiaozemaliya‘,    ‘user03‘:‘cangjingkong‘}msg[‘user03‘] = ‘瀧澤蘿拉‘

 

結果:

{‘user01‘: ‘Longzeluola‘, ‘user02‘: ‘xiaozemaliya‘, ‘user03‘: ‘瀧澤蘿拉‘}

那麼字典中如果需要新添加資料的話,也可以通過設定key-value的形式來進行添加。

msg = {    ‘user01‘:‘Longzeluola‘,    ‘user02‘:‘xiaozemaliya‘,    ‘user03‘:‘cangjingkong‘}msg[‘user04‘] = ‘MaLiCang‘print(msg)

 

結果:

{‘user01‘: ‘Longzeluola‘, ‘user02‘: ‘xiaozemaliya‘, ‘user03‘: ‘cangjingkong‘, ‘user04‘: ‘MaLiCang‘}

而如果需要刪除python中的資料,可以使用如下的三種方法:

msg = {    ‘user01‘:‘Longzeluola‘,    ‘user02‘:‘xiaozemaliya‘,    ‘user03‘:‘cangjingkong‘}# 刪除字典方法一#del msg[‘user01‘]  # {‘user02‘: ‘xiaozemaliya‘, ‘user03‘: ‘cangjingkong‘}# 刪除字典方法二#msg.pop(‘user01‘)  # # {‘user02‘: ‘xiaozemaliya‘, ‘user03‘: ‘cangjingkong‘}# 刪除字典方法三msg.popitem() # {‘user01‘: ‘Longzeluola‘, ‘user02‘: ‘xiaozemaliya‘}

 

補充

在上面的一些操作中,我們基本實現了字典的增刪改查,但是在查的過程中,有一點是需要注意的,如上面的查詢方式dir[key]這種,如果key值並不存在於字典中,就會出現一個keyerror的錯誤,所以為了避免錯誤,我們通常情況下都不會使用這種方式來進行字典的key值尋找,而是通過下面的方法。

# 建立一個字典msg = {    ‘user1101‘:‘Xiaozemaliya‘,    ‘user1102‘:‘Wutentlan‘,    ‘user1103‘:‘Cangjingkong‘}# 通過key值擷取value 使用get方式,存在key,那麼就返回對應的value,如果不存在key,那麼就返回Noneprint(msg.get(‘user1101‘)) # Xiaozemaliyaprint(msg.get(‘user1108‘)) # None 

 

判斷一個key是否存在於一個字典中,可以使用in 運算子。

# 建立一個字典msg = {    ‘user1101‘:‘Xiaozemaliya‘,    ‘user1102‘:‘Wutentlan‘,    ‘user1103‘:‘Cangjingkong‘}# 使用in檢測字典中是否存在指定的keyprint(‘user1101‘ in msg) # Trueprint(‘user1109‘ in msg) # False

 

上面是使用in運算子判斷key是否存在,需要注意的是,在python2.x 的版本中,判斷一個key是否存在於字典中,可以使用msg.has_key()的方式來進行判斷。

多級字典嵌套及操作

在字典中,一直以key-value的形式進行資料存放區,但是value的值除了是字串以外,還可以是其他類型的值。同時,在字典中,也可以繼續嵌套字典等資料。具體操作如下:

# 建立一個多級的字典av_catalog = {    "歐美":{        "www.youporn.com": ["很多免費的,世界最大的","品質一般"],        "www.pornhub.com": ["很多免費的,也很大","品質比yourporn高點"],        "letmedothistoyou.com": ["多是自拍,高品質圖片很多","資源不多,更新慢"],        "x-art.com":["品質很高,真的很高","全部收費,屌比請繞過"]    },    "日韓":{        "tokyo-hot":["品質怎樣不清楚,個人已經不喜歡日韓範了","聽說是收費的"]    },    "大陸":{        "1024":["全部免費,真好,好人一生平安","伺服器在國外,慢"]    }}# 更改key值av_catalog[‘大陸‘][‘1024‘][1] = ‘可以在國內做一個鏡像‘print(av_catalog)

 

關於字典的補充說明

values 列印字典裡面的所有的值

msg = {    ‘stu1101‘:‘XiaomingStudent‘,    ‘stu1102‘:‘XiaohongStudent‘,    ‘stu2201‘:‘XiaolvStudent‘,    ‘stu3101‘:‘XiaoZhangStudent‘}# values() 方法 輸出字典中所有的值print(msg.values())

 

結果為:

dict_values([‘XiaomingStudent‘, ‘XiaohongStudent‘, ‘XiaolvStudent‘, ‘XiaoZhangStudent‘])

keys 列印所有的key

msg = {    ‘stu1101‘:‘XiaomingStudent‘,    ‘stu1102‘:‘XiaohongStudent‘,    ‘stu2201‘:‘XiaolvStudent‘,    ‘stu3101‘:‘XiaoZhangStudent‘}# keys 列印所有的keyprint(msg.keys())

 

結果為:

dict_keys([‘stu1101‘, ‘stu1102‘, ‘stu2201‘, ‘stu3101‘])

setdefault

設定新的key:value ,如果設定的key在字典中存在,那麼就會把之前的key以及value返回,新設定的就會失效,如果沒有就把設定的key:value添加到字典中去。

msg = {    ‘stu1101‘:‘XiaomingStudent‘,    ‘stu1102‘:‘XiaohongStudent‘,    ‘stu2201‘:‘XiaolvStudent‘,    ‘stu3101‘:‘XiaoZhangStudent‘}# 使用setdefault方法設定key:valuemsg.setdefault(‘stu3101‘,‘YanYanStudent‘) # 此時3101key 已經存在,並不會新增的內容所影響print(msg)msg.setdefault(‘stu3102‘,‘LuLuStudent‘) # 此時新增加的key 3102 添加成功print(msg)

 

update 更新合并

使用update方法,可以將兩個字典合并,並且如果字典中存在重複的內容,會產生覆蓋,如果內容不重複,就會被合并到一個字典中。

msg = {    ‘stu1101‘:‘XiaomingStudent‘,    ‘stu1102‘:‘XiaohongStudent‘,    ‘stu2201‘:‘XiaolvStudent‘,    ‘stu3101‘:‘XiaoZhangStudent‘}test_info = {    ‘T1101‘:‘YanYanTeacher‘,    ‘T1102‘:‘LiBai‘,    ‘stu2201‘:‘JingjingStudent‘}msg.update(test_info)print(msg)

 

輸出結果為:

{‘stu1101‘: ‘XiaomingStudent‘, ‘stu1102‘: ‘XiaohongStudent‘, ‘stu2201‘: ‘JingjingStudent‘, ‘stu3101‘: ‘XiaoZhangStudent‘, ‘T1101‘: ‘YanYanTeacher‘, ‘T1102‘: ‘LiBai‘}

items 把一個列錶轉為一個元組

msg = {    ‘stu1101‘:‘XiaomingStudent‘,    ‘stu1102‘:‘XiaohongStudent‘,    ‘stu2201‘:‘XiaolvStudent‘,    ‘stu3101‘:‘XiaoZhangStudent‘}print(msg.items())

 

輸出結果為:

dict_items([(‘stu1101‘, ‘XiaomingStudent‘), (‘stu1102‘, ‘XiaohongStudent‘), (‘stu2201‘, ‘XiaolvStudent‘), (‘stu3101‘, ‘XiaoZhangStudent‘)])

fromkeys 建立一個初始化列表

test_dir = dict.fromkeys([‘stu01‘,‘stu02‘,‘stu03‘],[1,{‘name‘:‘YanYanStudent‘}])print(test_dir) 

 

輸出的結果為:

{‘stu01‘: [1, {‘name‘: ‘YanYanStudent‘}], ‘stu02‘: [1, {‘name‘: ‘YanYanStudent‘}], ‘stu03‘: [1, {‘name‘: ‘YanYanStudent‘}]}

此時通過dict.fromkeys方法,就建立出了一個新的字典,但是在這個字典中存在一個容易錯的地方,如下:

test_dir = dict.fromkeys([‘stu01‘,‘stu02‘,‘stu03‘],[1,{‘name‘:‘YanYanStudent‘}])# 嘗試著更改這個字典中的內容通過key值test_dir[‘stu01‘][1][‘name‘] = ‘YanYanTeacher‘print(test_dir)

 

我們在代碼中更改了其中的一個key的值,結果輸出卻為:

{‘stu01‘: [1, {‘name‘: ‘YanYanTeacher‘}], ‘stu02‘: [1, {‘name‘: ‘YanYanTeacher‘}], ‘stu03‘: [1, {‘name‘: ‘YanYanTeacher‘}]}

此時我們發現所有的key對應的value都被改變了。而這也是我們在使用這個fromkeys方法的時候需要注意的點。

字典的迴圈輸出

將字典中key和value迴圈輸出,有以下的兩種方式:

# 建立一個字典msg = {    ‘T1101‘:‘YanYanTeacher‘,    ‘T1201‘:‘LuLuTeacher‘,    ‘T1301‘:‘JingJingTeacher‘}# 迴圈輸出字典 -- 第一種方法for i in msg:    print(i,msg[i])# 迴圈輸出字典 -- 第二種方法for i,v in msg.items():    print(i,v)

 

上面兩種迴圈輸出資料行表的方式輸出的結果是一樣的,但是較為推薦使用第一種,因為第一種方式的執行效率要高於第二種,因為第一種是直接根據key值取出value,而第二種方式則是要多出一步將字典轉換為列表的步驟,所以效率相對來講比較低。

python 字典相關操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.