迭代字典时使用第一个代码块而不是第二个代码块有什么优势吗?
for k, v in mydict.items():
if v == None:
mydict[k] = ''
和
for k in mydict.keys():
if mydict[k] == None:
mydict[k] = ''
迭代字典时使用第一个代码块而不是第二个代码块有什么优势吗?
for k, v in mydict.items():
if v == None:
mydict[k] = ''
和
for k in mydict.keys():
if mydict[k] == None:
mydict[k] = ''
第一种方法可以说更清晰,更容易阅读,所以我总是推荐它而不是后者。
也就是说,在这样的简单情况下,更好的选择是字典理解:
{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()
会产生字典视图,这是懒惰的。)