rix*_*rix 1 python python-2.7 python-3.x
我正在尝试从嵌套字典中删除非值。我的第一次努力工作正常,但不幸的是,指向现在空字典的键仍然存在。
所以如果我这样做:
pass1 = stripper(my_dict)
return stripper(pass1)
Run Code Online (Sandbox Code Playgroud)
这有效,但我认为可能有更优雅的嵌套解决方案?
def stripper(self, data):
if isinstance(data, dict):
d = ({k: stripper(v) for k, v in data.items()
if v not in [u'', None]})
if d:
return d
else:
return data
Run Code Online (Sandbox Code Playgroud)
编辑:
失败的例子,下面的 dict 返回为{'foo': 'bar', 'bar': None}:
{
'foo': 'bar',
'bar': {
'foo': None,
'one': None
}
}
Run Code Online (Sandbox Code Playgroud)
dict 的理解当然是简洁的,但如果你把它展开,解决方案就会变得更加明显:
def stripper(self, data):
new_data = {}
for k, v in data.items():
if isinstance(v, dict):
v = stripper(v)
if not v in (u'', None, {}):
new_data[k] = v
return new_data
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2965 次 |
| 最近记录: |