.items()和.keys()之间的区别

时间:2012-12-20 00:03:16

标签: python

在迭代字典时,使用第一个代码块比第二个代码块有什么优势吗?

for k, v in mydict.items():
    if v == None:
        mydict[k] = ''

for k in mydict.keys():
    if mydict[k] == None:
        mydict[k] = ''

1 个答案:

答案 0 :(得分:9)

第一种方法可以说更清晰,更容易阅读,所以我总是会推荐它。

那就是说,在这种简单的情况下,更好的选择是dictionary comprehension

{k: v if v is not None else "" for k, v in mydict.items()}

值得注意的是,第二个示例可以简化,因为直接在mydict上进行迭代将提供密钥,因此不需要mydict.keys()(这对于你想要的时候非常有用)用于其他目的的密钥,而不是迭代)。

(正如jathanism在评论中指出的,在旧版本的Python(2.x)中,使用iteritems()是比items()更好的选择,因为它不会产生列表 - 3.x用户像我一样,不需要担心,因为items()产生了一个懒惰的字典视图。)