在Python中,如果字典中的值等于某个值,该如何循环遍历字典并更改它?

2024-04-20 13:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

Tags: 字符串inrightnoneforifisitems
3条回答

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

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

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

但在Python3中,代码会给出AttributeError: 'dict' object has no attribute 'iteritems'错误。在这里使用items()而不是iteritems()

参考this post.

您可以创建对值为“无”的元素的dict理解,然后更新回原始元素:

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

更新-进行了一些性能测试

好吧,在尝试了100到10000个项目的指令后,使用不同的无值百分比,Alex的解决方案的性能是这个解决方案的两倍左右。

相关问题 更多 >