← eetop.cn_Perl语言入门(第四版小骆驼书)

推荐答案 测试一下

3.1 keys和values函数 ................................ ................................ ................................ ..…

问答题 中等 经典问答问答题

参考答案

本题考察的是Python字典中keys()和values()方法的核心特性及版本差异。在Python3中,dict.keys()返回的是dict_keys视图对象,dict.values()返回dict_values视图对象。这些视图对象是动态的:当字典本身发生增删改操作时,视图会实时反映变化;支持迭代(for k in d.keys())和成员测试(k in d.keys()),但不支持索引操作(如d.keys()[0]会抛出TypeError)。视图对象的内存效率更高,因为它们不复制键或值的列表,而是提供对原始字典数据的只读引用。若需要静态列表,必须显式调用list(d.keys())。Python2中,这两个方法直接返回列表对象,列表在创建后不会随字典变化而更新,且复制所有键/值到新列表,占用更多内存。在Python2.7中虽引入了viewkeys()等方法来模拟Python3行为,但默认keys()仍返回列表。常见考点有:1) 视图对象的动态性与惰性求值;2) 视图支持集合运算(如键视图支持&、|、-等操作)而值视图不支持(因为值可能重复且不可哈希);3) 在for循环中直接遍历字典等价于遍历d.keys(),但遍历视图时修改字典需注意可能会导致运行时异常(RuntimeError: dictionary changed size during iteration),与列表遍历不同。易错点:混淆Python2与Python3的返回类型,误认为视图对象可直接索引,或忽视视图对象在字典修改时的行为。

涉及知识点

  • Python字典keys()与values()方法
  • 视图对象(dict_keys/dict_values)特性
  • Python2与Python3版本差异
  • 内存效率与动态更新机制
  • 视图支持的集合运算有限性
← 上一题
登录后反馈错题
下一题 →