總結:11個Python3字典內建方法大全及示例

若數發表於2019-05-10

概述

字典有著類似列表的高靈活度的特點,而與列表通過偏移索引的存取元素的方式不同,字典是通過無序的鍵來存取鍵值對的,即字典是任意物件的無需集合,可在原處增加或減少,且支援任意深度的巢狀(即可以包含諸如列表,其他的字典等),下面就介紹了Python提供的11個字典內建方法的基本概述及簡單示例。

方法 描述
clear 清除字典中所有鍵值對
copy 對字典進行淺拷貝,如需詳細瞭解可以參考上上節可變物件的淺拷貝和深拷貝詳解《Python列表賦值,複製,深拷貝以及5種淺拷貝詳解》
fromkeys fromkeys(*args, **kwargs) 建立一個新字典,以序列的中元素做字典的鍵,value 為字典所有鍵對應的初始值
get get(self, k, d=None) 獲取指定鍵k對應的值,如果該鍵不存在則返回d,預設為None 該方法可以用來判斷某鍵是否包含在字典內
items 返回類似集合的可遍歷的(鍵, 值) 元組列表
keys 返回類似集合的可遍歷的鍵列表
pop 刪除一個鍵並返回其對應的值
popitem 隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對),若列表為空再呼叫此方法會丟擲KeyError異常
setdefault setdefault(self, k, d=None) 函式和 get()方法 類似, 如果鍵不存在於字典中,將會新增鍵並將值設為預設值
update 更新字典中的鍵/值對,可以修改存在的鍵對應的值,也可以新增新的鍵/值對到字典中,將鍵值對新增到字典中,可能是字典,也可能是鍵-值對序列,詳見例項
values 返回類似集合的可遍歷的值列表

示例程式碼

# dict
import copy

# 示例字典
D = {
    'name': 'Ruo Data',
    'web': {
        'site': 'https://www.ruodata.com',
        'basic': 'github'
    },
    'major': 'python'
}

print(D)

print('clear'.center(40, '-'))
# clear|清除字典中所有鍵值對
D1 = copy.deepcopy(D)
D1.clear()
print(D1)

print('copy'.center(40, '-'))
# copy|對字典進行淺拷貝,如需詳細瞭解可以參考上上節可變物件的淺拷貝和深拷貝詳解《Python列表賦值,複製,深拷貝以及5種淺拷貝詳解》
D2 = copy.deepcopy(D)
D2_copy = D2.copy()
D2_copy['web']['articl_nums'] = 2
print(D2)

print('fromkeys'.center(40, '-'))
# fromkeys| fromkeys(*args, **kwargs) 建立一個新字典,以序列的中元素做字典的鍵,value 為字典所有鍵對應的初始值
D3 = dict.fromkeys(D)
print(D3)
D3 = dict.fromkeys(D, 'SSS')
print(D3)

print('get'.center(40, '-'))
# get| get(self, k, d=None) 獲取指定鍵k對應的值,如果該鍵不存在則返回d,預設為`None` 該方法可以用來判斷某鍵是否包含在字典內
value = D.get('name')
print(value)
# 判斷鍵`'TEAM'`是否存在於D中:
if D.get('TEAM'):
    print(D.get('TEAM'))
else:
    print(None)

print('items'.center(40, '-'))
# items| 返回類似集合的可遍歷的(鍵, 值) 元組列表。
items = D.items()
print(items)
# 利用items 遍歷字典列印鍵值對:
for key, value in D.items():
    print('{}: {}'.format(key, value))

print('keys'.center(40, '-'))
# keys| 返回類似集合的可遍歷的鍵列表
keys = D.keys()
print(keys)

print('pop'.center(40, '-'))
# pop| 刪除一個鍵並返回其對應的值
D4 = copy.deepcopy(D)
value = D4.pop('name')
print(value)
print(D4)

print('popitem'.center(40, '-'))
# popitem| 隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對),若列表為空再呼叫此方法會丟擲KeyError異常
D5 = copy.deepcopy(D)
key_value = D5.popitem()
print(key_value)
print(D5)

print('setdefault'.center(40, '-'))
# setdefault| setdefault(self, k, d=None) 函式和 get()方法 類似, 如果鍵不存在於字典中,將會新增鍵並將值設為預設值。
D6 = copy.deepcopy(D)
key_value = D6.setdefault('major')
print(key_value)
key_value = D6.setdefault('UNKONW_KEY', 'UNKOWN_VALUE')
print(key_value)
print(D6)

print('update'.center(40, '-'))
# update| 更新字典中的鍵/值對,可以修改存在的鍵對應的值,也可以新增新的鍵/值對到字典中,將e中鍵-值對新增到字典d中,e可能是字典,也可能是鍵-值對序列。詳見例項。
D7 = copy.deepcopy(D)

# 傳一個字典
D7.update({'three': 3, 'four': 4})
print(D7)

# 傳關鍵字
D7.update(five=5, six=6)
print(D7)

# 傳一個包含一個或多個元組的列表
D7.update([('seven', 7), ('eight', 8)])
print(D7)

# 傳一個包含一個或多個列表的元組
D7.update((['nice', 9], ['ten', 10]))
print(D7)

# 傳一個zip()函式
D7.update(zip(['eleven', 'twelve'], [11, 12]))
print(D7)

# 使用以上任意方法修改存在的鍵對應的值
D7.update(one=111, two=222)
print(D7)

print('values'.center(40, '-'))
# values| 返回類似集合的可遍歷的值列表
values = D.values()
print(values)

複製程式碼

carbon (2).png

示例結果

res (1).png

相關文章