gpt4 book ai didi

python - 如何从 Python 中的嵌套字典中删除某些键?

转载 作者:行者123 更新时间:2023-12-03 23:46:09 25 4
gpt4 key购买 nike

我正在 Python 3.8 中执行此操作,但我无法找到一个干净的解决方案。
如果值等于 0,我试图从嵌套字典中删除任何值。
所以嵌套字典有点像这样:

{1: {"alert1" : 0, "alert2": 1, "alert3" : 3, "alert4": 1},
2: {"alert1" : 45, "alert2": 2, "alert3" : 0, "alert4": 54},
3: {"alert1" : 2, "alert2": 1, "alert3" : 33, "alert4": 11},
4: {"alert1" : 1, "alert2": 0, "alert3" : 2, "alert4": 0}}
因此,如果我想打印或查看它,但前提是警报不是 0
所以 print(nested_dic) 看起来像这样。
1 - alert2: 1    alert3: 3    alert4: 1
2 - alert1: 45 alert2: 2 alert4: 54
3 - alert1: 2 alert2: 1 alert3: 33 alert3: 11
4 - alert1: 1 alert3: 2
编辑:删除非零或保存一个没有零的新字典要打印出来。

最佳答案

如果你只有一层嵌套,我认为在理解中使用理解仍然可读,所以我建议这样做(d 是你的字典):

>>> {k: {k_sub: v_sub for k_sub, v_sub in v.items() if v_sub != 0} for k, v in d.items()}

{1: {'alert2': 1, 'alert3': 3, 'alert4': 1},
2: {'alert1': 45, 'alert2': 2, 'alert4': 54},
3: {'alert1': 2, 'alert2': 1, 'alert3': 33, 'alert4': 11},
4: {'alert1': 1, 'alert3': 2}}
但也许您更喜欢更详细的代码并添加更多名称以便于阅读:
def non_zero(alerts):
return {code: value for code, value in alerts.items() if value != 0}

all_alerts = {1: {"alert1" : 0, "alert2": 1, "alert3" : 3, "alert4": 1},
2: {"alert1" : 45, "alert2": 2, "alert3" : 0, "alert4": 54},
3: {"alert1" : 2, "alert2": 1, "alert3" : 33, "alert4": 11},
4: {"alert1" : 1, "alert2": 0, "alert3" : 2, "alert4": 0}}

all_non_zero_alerts = {identifier: non_zero(alerts) for identifier, alerts in all_alerts.items()}
这与之前的操作完全相同,但代码实现的目的可能更清楚一些。

关于python - 如何从 Python 中的嵌套字典中删除某些键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62563387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com