在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())