2024-04-20 13:36:47 发布
网友
如果值为None,我想将其更改为“”(空字符串)。
我是这样开始的,但我忘了:
for k, v in mydict.items(): if v is None: ... right?
理解通常更快,这样做的好处是在迭代期间不编辑mydict:
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。
items
iteritems
但在Python3中,代码会给出AttributeError: 'dict' object has no attribute 'iteritems'错误。在这里使用items()而不是iteritems()。
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的解决方案的性能是这个解决方案的两倍左右。
理解通常更快,这样做的好处是在迭代期间不编辑
mydict
:在更一般的情况下,例如,如果您正在添加或删除密钥,则更改正在循环的容器的结构可能不安全--因此使用
items
在其独立列表副本上循环可能是谨慎的--但在给定的现有索引处分配不同的值不会导致任何问题,因此,在Python 2.any中,最好使用iteritems
。但在Python3中,代码会给出
AttributeError: 'dict' object has no attribute 'iteritems'
错误。在这里使用items()
而不是iteritems()
。参考this post.
您可以创建对值为“无”的元素的dict理解,然后更新回原始元素:
更新-进行了一些性能测试
好吧,在尝试了100到10000个项目的指令后,使用不同的无值百分比,Alex的解决方案的性能是这个解决方案的两倍左右。
相关问题 更多 >
编程相关推荐