首页 > 编程语言 > 详细

Python 迭代字典时是否应该使用 keys()

时间:2014-12-28 19:36:59      阅读:402      评论:0      收藏:0      [点我收藏+]

Python2 的话,应该。

因为可迭代对象如果在迭代过程中长度发生了变化,就会引发 Runtime Error ,所以在 for k in some_dict: 这样的语句中,是不可以使用 .pop().update() 方法的:

RuntimeError                              Traceback (most recent call last)
----> 1 for k in foo:
      2     foo.pop(k)

RuntimeError: dictionary changed size during iteration

除非明确知道这次操作中不会增删被迭代对象的元素,否则应该先把对象的 keys 拿出来放到另一个对象里(keys() 方法返回的列表),以避免上面的异常。

但在 Python3 中, keys() 不再返回列表,而是被迭代对象的 dict_keys 属性,所以这招行不通了。可以考虑 list 转换、待迭代结束后再 pop 或者使用字典推导式。

Python 迭代字典时是否应该使用 keys()

原文:http://my.oschina.net/lionets/blog/361632

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!