3

迭代字典时使用第一个代码块而不是第二个代码块有什么优势吗?

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

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

1 回答 1

9

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

也就是说,在这样的简单情况下,更好的选择是字典理解

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

值得注意的是,第二个示例可以简化,因为直接迭代mydict将提供键,所以不需要mydict.keys()(这主要用于当您想要一组键用于其他目的时,而不是迭代)。

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

于 2012-12-20T00:05:11.670 回答