喜欢的东西:如何摆脱字典中的None值?
for (a,b) in kwargs.iteritems():
if not b : del kwargs[a]
此代码引发异常,因为字典的迭代变化时。
我发现只能用另一个词典不漂亮的解决方案:
res ={}
res.update((a,b) for a,b in kwargs.iteritems() if b is not None)
感谢
喜欢的东西:如何摆脱字典中的None值?
for (a,b) in kwargs.iteritems():
if not b : del kwargs[a]
此代码引发异常,因为字典的迭代变化时。
我发现只能用另一个词典不漂亮的解决方案:
res ={}
res.update((a,b) for a,b in kwargs.iteritems() if b is not None)
感谢
另一种方式来写它是
res = dict((k,v) for k,v in kwargs.iteritems() if v is not None)
在Python3,这成为
res = {k:v for k,v in kwargs.items() if v is not None}
我喜欢你的第二个方法的改变:
res = dict((a, b) for (a, b) in kwargs.iteritems() if b is not None)
这是Python的,我不认为那很丑陋。你的第一个的变化是:
for (a, b) in list(kwargs.iteritems()):
if b is None:
del kwargs[a]
您还可以使用filter
:
d = dict(a = 1, b = None, c = 3)
filtered = dict(filter(lambda item: item[1] is not None, d.items()))
print(filtered)
{'a': 1, 'c': 3}
d = {'a': None, 'b': 'myname', 'c': 122}
print dict(filter(lambda x:x[1], d.items()))
{'b': 'myname', 'c': 122}
除了代码之外,习惯上还是给你的答案添加一些评论。 – aliteralmind 2014-07-09 21:21:20
谢谢。下次会这样做。 – Sandilya 2014-08-19 17:19:28
你可以使用kwargs.items(),它已经返回一个列表。 – liori 2010-03-30 11:35:58
'dict.items()'不再返回Python3中的列表。它更像'iteritems()' – 2010-03-30 11:39:33