如果值为None,我想将其更改为“”(空字符串)。
我这样开始,但我忘了:
for k, v in mydict.items():
if v is None:
... right?
答案 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())