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}

猜你喜欢

转载自blog.csdn.net/qq_41648043/article/details/82878150