在Python中,我如何循环字典并更改值,如果它等于什么?

时间:2010-02-23 01:19:42

标签: python dictionary

如果值为None,我想将其更改为“”(空字符串)。

我这样开始,但我忘了:

for k, v in mydict.items():
    if v is None:
... right?

3 个答案:

答案 0 :(得分:113)

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

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

Python3 中,但代码会出现AttributeError: 'dict' object has no attribute 'iteritems'错误。在此处使用items()代替iteritems()

请参阅this post.

答案 1 :(得分:14)

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

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

更新 - 做了一些性能测试

好吧,在尝试了100到10,000个项目的序列,并且使用不同百分比的值时,Alex的解决方案的性能大约是该解决方案的两倍。

答案 2 :(得分:8)

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

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