python教程

当前位置:首页 > python进阶 > 当前文章

python进阶

字典变化其dict.keys(),dict.values(),dict.items()也会变—字典view对象

2021-01-17 141赞 老董笔记
每篇文章努力于解决一个问题!更多精品可移步文章底部。

  在Python3中dict.keys()、dict.values()、dict.items()返回的不是列表而是视图对象Dictionary view objects。下面我们看下官方文档的解释:

  The objects returned by dict.keys(),dict.values() and dict.items() are view objects. They provide a dynamic view on the dictionary’s entries, which means that when the dictionary changes, the view reflects these changes.

  文档的意思是字典变化那么这个视图对象也会发生变化,下面用代码来说明:

# -*- coding: utf-8 -*-
d1 = {'name': '马云', 'nickname': '首富', 'age': 55}
view_obj = d1.items()
print(view_obj)
d1['address'] = '杭州'
print(d1)
print(view_obj) # 同样发生了变化
dict_items([('name', '马云'), ('nickname', '首富'), ('age', 55)])
{'name': '马云', 'nickname': '首富', 'age': 55, 'address': '杭州'}
dict_items([('name', '马云'), ('nickname', '首富'), ('age', 55), ('address', '杭州')])

  字典的视图对象不支持直接索引,但是支持迭代。对dict视图对象进行迭代相比列表迭代效率更高,因为构建列表需要花费时间和内存。 dict视图对象提供了一个迭代器,该迭代器直接遍历字典的基础存储跳过了不必要的列表步骤(旧方法是Python遍历dict的基础存储以构建新列表,然后遍历该列表)。

  参考文档:https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects

文章评论

字典变化其dict.keys(),dict.values(),dict.items()也会变—字典view对象文章写得不错,值得赞赏