字典的popitem()方法和列表的pop()方法很像,都是“弹出”并返回一个元素。在Python 3.5及之前的版本中,字典是无序的,因此,popitem()是随机弹出一个项;但从Python 3.6开始,字典是按插入的顺序排列的,因此,popitem()弹出的是最后一个项。
首先验证一下Python 3.5和3.6这两个版本的有序性(Python 2和这两个版本的表现也均不一致,本书不详细探讨)。在Python 3.5中:
- >>> someone = {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> someone # 查看someone
- {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> someone # 再次查看someone,发现它并没有改变
- {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
然后关闭Python交互模式,再重新进入Python交互模式:
- >>> someone = {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> someone # someone字典键-值对的顺序发生了改变
- {'hobbies': ['sing songs', 'dance', 'basketball'], 'name': 'Wang', 'age': 19}
- >>> someone
- {'hobbies': ['sing songs', 'dance', 'basketball'], 'name': 'Wang', 'age': 19}
由于在Python 3.5及之前的版本中,字典是无序的,因此,上面的情况可能会出现(由于是随机的,当然也可能顺序不变)。但是从Python 3.6开始,执行和前面一样的操作,无论做多少次,都会得到下面的结果:
- >>> someone = {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> someone
- {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> someone
- {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
确认Python 3.6中字典是有序的之后,尝试使用popitems()方法:
- >>> someone = {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> someone.popitem() # 弹出并返回最后一个项
- ('hobbies', ['sing songs', 'dance', 'basketball'])
- >>> someone.popitem()
- ('age', 19)
- >>> someone.popitem()
- ('name', 'Wang')
- >>> someone.popitem() # 如果字典为空,Python解释器会报错
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- KeyError: 'popitem(): dictionary is empty'
5、copy()方法
与列表的copy()方法类似,字典的copy()方法返回一个和被拷贝字典相同的字典(同样是浅复制):
- >>> someone = {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> other = someone.copy()
- >>> other
- {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> other['gender'] = 'female' # other字典中添加一个键-值对
- >>> other # other字典改变了
- {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball'], 'gender': 'female'}
- >>> someone # someone字典并没有改变
- {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
6、fromkeys()方法
字典的fromkeys()方法用于根据指定序列创建一个新字典,该字典具有用户提供的值。fromkeys()方法返回一个新字典,其中指定序列中的项作为字典的键。如果设置了value参数,那么字典所有键对应的值都将设置为提供的值;如果未设置,那么默认值为None:
- >>> someone = {}.fromkeys(['name', 'age', 'hobbies']) # 默认值为None
- >>> someone
- {'name': None, 'age': None, 'hobbies': None}
- >>> someone = {}.fromkeys(['name', 'age', 'hobbies'], 'a') # 指定默认值
- >>> someone
- {'name': 'a', 'age': 'a', 'hobbies': 'a'}
7、clear()方法
字典的clear()方法用于清除字典中的所有项:
- >>> someone = {'name': 'Wang', 'age': 19, 'hobbies': ['sing songs', 'dance', 'basketball']}
- >>> someone.clear()
- >>> someone # 此时someone字典是一个空字典
- {}
>>本文地址:https://www.ujiuye.com/zhuanye/2020/51892.html
声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。
1 您的年龄
2 您的学历
3 您更想做哪个方向的工作?