python3字典之pop()與popitem()
阿新 • • 發佈:2018-12-15
這裡我們要說的是字典刪除方法: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}