我有一个嵌套字典:
{'a': {'m': 1, 'n': 0}, 'b': {'m': 0, 'x': 1}}
是否有一种简单的方法可以删除所有嵌套的零值,使字典变为:
{'a': {'m': 1}, 'b': {'x': 1}}
iyfamqjs1#
词典理解:
>>> d = {'a': {'m': 1, 'n': 0}, 'b': {'m': 0, 'x': 1}} >>> {key: {k:v for k,v in d[key].items() if v != 0} for key in d}
输出:
aiqt4smr2#
一种方法是就地修改字典:
d = {'a': {'m': 1, 'n': 0}, 'b': {'m': 0, 'x': 1}} for dd in d.values(): for k, v in list(dd.items()): if v == 0: dd.pop(k) print(d)
产出
o7jaxewo3#
您可以使用dict解析:
d = {'a': {'m': 1, 'n': 0}, 'b': {'m': 0, 'x': 1}} result = {k: {k1: v1 for k1, v1 in v.items() if v1 != 0} for k, v in d.items()}
aiazj4mn4#
一线解决方案:
d = {'a': {'m': 1, 'n': 0}, 'b': {'m': 0, 'x': 1}} d_new = {k: {inner_k: inner_v for inner_k, inner_v in v.items() if inner_v != 0} for k, v in d.items()} print(d_new) # Prints: {'a': {'m': 1}, 'b': {'x': 1}}
hc2pp10m5#
dict_1 = {'a': {'m': 1, 'n': 0}, 'b': {'m': 0, 'x': 1}} new_dict_1={} for key in dict_1.keys(): for v,k in zip(dict_1[key].values(),dict_1[key].keys()): if v != 0 : new_dict_1[key] = {k:v} new_dict_1
au9on6nz6#
您甚至可以尝试将嵌套的dict转换为flat,然后查找值零代码:
[d[k[0]].pop(k[-1]) for k,v in pd.json_normalize(d).to_dict(orient='records')[0].items() if v==0] d
6条答案
按热度按时间iyfamqjs1#
词典理解:
输出:
aiqt4smr2#
一种方法是就地修改字典:
产出
o7jaxewo3#
您可以使用dict解析:
aiazj4mn4#
一线解决方案:
hc2pp10m5#
au9on6nz6#
您甚至可以尝试将嵌套的dict转换为flat,然后查找值零
代码: