我在Python3.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时 所以打印(嵌套的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
这里是您的字典):但您可能更喜欢更详细的代码,并添加更多的名称,以便更容易阅读:
这与之前做的事情完全相同,但可能更清楚代码实现了什么
我的解决方案是使用列表理解。这是迭代和删除任何不需要的项的最佳方法。下面是一个如何工作的示例:
在这里,您所做的唯一过滤发生在for iteration循环上,如果值不是0,则循环遍历所有键
此解决方案更可取,因为它使用pythonicdictionary comprehension,它允许您在一个简单的行中整齐地迭代单个dict中的每个项目。相对于循环,这是一种更有益的方法,因为Python可以轻松地优化列表理解以提高效率
变体
如果要修改现有字典,只需在迭代时修改键,如下所示:
如果要复制,只需创建另一个字典并添加它:
可以看到这些方法here(注释掉)
相关问题 更多 >
编程相关推荐