在迭代字典时,使用第一个代码块比第二个代码块有什么优势吗?
for k, v in mydict.items():
if v == None:
mydict[k] = ''
和
for k in mydict.keys():
if mydict[k] == None:
mydict[k] = ''
答案 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()
产生了一个懒惰的字典视图。)