在Python中,如何循环查看字典并更改值(如果它等于某个值)?

如果值是None,我想把它改成“”(空string)。

我从这样开始,但是我忘了:

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

在更一般的情况下,例如,如果您正在添加或删除密钥,那么更改正在循环的容器的结构可能并不安全 – 因此使用items在独立的列表副本上循环可能是谨慎的 -但是在给定的现有索引处分配一个不同的值不会产生任何问题,所以在Python 2.any中,最好使用iteritems

你可以创build一个dict理解只有值为None的元素,然后更新回原来的:

 tmp = dict((k,"") for k,v in mydict.iteritems() if v is None) mydict.update(tmp) 

更新 – 做了一些性能testing

那么,在尝试了从100到10000个不同的百分比值的情况下,Alex的解决scheme的性能是这个解决scheme的两倍。

理解速度通常更快,这样做的好处是在迭代过程中不需要编辑mydict

 mydict = dict((k, v if v else '') for k, v in mydict.items())