1. 程式人生 > >python3字典之pop()與popitem()

python3字典之pop()與popitem()

這裡我們要說的是字典刪除方法:pop()和popitem(),這兩種種方法的作用不同,操作方法及返回值都不相同。
pop (key[,default])
其中,key是必選引數,必須給出,default是可選引數,可以不給出。
如果鍵值key在字典中存在,刪除dict[key],返回 dict[key]的value值。
否則,如有給出default值則返回default值,如果default值沒有給出,就會報出KeyError異常。
pop()方法至少接受一個引數,最多接受兩個引數。

僅給出key且key在字典中
或key和default都給出且key在字典中

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
pop_obj = d.pop('b')
print('pop_obj:', pop_obj)
print('dict:', d)

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
pop_obj = d.pop('b', 'none')
print('pop_obj:', pop_obj)
print('dict:', d)

輸出

pop_obj: 2
dict: {'a': 1, 'd': 4, 'c': 3}

pop_obj: 2
dict: {'d': 4, 'a': 1, 'c': 3}

僅給出key且key不在字典中

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
pop_obj = d.pop('e')
print('pop_obj:', pop_obj)

輸出

Traceback (most recent call last):
  File "/home/PycharmProjects/test/re_test.py", line 29, in <module>
    pop_obj = d.pop('e')
KeyError: 'e'

給出key和default值且key不在字典中

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
pop_obj = d.pop('e', 'none')
print('pop_obj:', pop_obj)
print('dict:', d)

輸出

pop_obj: none
dict: {'d': 4, 'a': 1, 'b': 2, 'c': 3}

popitem()
隨機刪除字典中的一個鍵值對,並且返回該鍵值對,(key,value)形式。
如果字典已經為空,卻呼叫了此方法,就報出KeyError異常。

在這裡,“隨機”我看到有好幾種解釋,我個人理解是我們建立的字典是無序的,它返回給我們的字典是怎樣的順序我們並不清楚,但popitem()會從返回字典的第一個開始刪除。

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print(d)
pop_obj = d.popitem()
print('pop_obj:', pop_obj)
print('dict:', d)
pop_obj = d.popitem()
print('pop_obj:', pop_obj)
print('dict:', d)

第一次執行該程式碼的輸出

{'c': 3, 'b': 2, 'd': 4, 'a': 1}
pop_obj: ('c', 3)
dict: {'b': 2, 'd': 4, 'a': 1}
pop_obj: ('b', 2)
dict: {'d': 4, 'a': 1}

第二次執行該程式碼的輸出

{'c': 3, 'd': 4, 'b': 2, 'a': 1}
pop_obj: ('c', 3)
dict: {'d': 4, 'b': 2, 'a': 1}
pop_obj: ('d', 4)
dict: {'b': 2, 'a': 1}