python 视图对象_什么是字典视图对象?

字典视图本质上就是它们的名称:视图就像一个关于字典键和值(或项)的窗口。以下是Python 3的official documentation摘录:>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}

>>> keys = dishes.keys()

>>> values = dishes.values()

>>> # view objects are dynamic and reflect dict changes

>>> del dishes['eggs']

>>> keys # No eggs anymore!

dict_keys(['sausage', 'bacon', 'spam'])

>>> values # No eggs value (2) anymore!

dict_values([1, 1, 500])

(相当于Python 2的代码使用dishes.viewkeys()和dishes.viewvalues()。)

此示例显示视图的动态特性:keys视图不是给定时间点的键的副本,而是一个显示键的简单窗口;如果键被更改,则通过窗口看到的内容也会更改。此功能在某些情况下可能很有用(例如,可以在程序的多个部分中使用键的视图,而不是在每次需要时重新计算当前键列表)-请注意,如果在视图上迭代时修改了字典键,则迭代器的行为方式没有很好地定义,这可能lead to errors。

一个优点是,查看这些键时,只使用少量的固定内存,并且需要少量的固定处理器时间,因为不需要创建键列表(另一方面,Python 2常常不必要地创建一个新列表,如Rajendran T所引述,它需要与列表长度成比例的内存和时间)。要继续进行窗口类比,如果您想看到墙后的景观,只需在其中打开一个孔(您可以构建一个窗口);将键复制到列表中,将对应于在墙上绘制景观的副本,副本需要时间、空间,并且不会自我更新。

总而言之,视图只是字典上的…视图(窗口),即使字典发生更改,它也会显示字典的内容。它们提供了不同于列表的特性:键列表在给定的时间点包含字典键的copy,而视图是动态的,获取速度更快,因为它不必复制任何数据(键或值)就可以创建。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值