擅长:python、mysql、java
<p>如果您只有一个嵌套级别,我认为在理解中使用理解仍然是可读的,因此我建议(<code>d</code>这里是您的字典):</p>
<pre class="lang-py prettyprint-override"><code>>>> {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}}
</code></pre>
<p>但您可能更喜欢更详细的代码,并添加更多的名称,以便更容易阅读:</p>
<pre class="lang-py prettyprint-override"><code>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()}
</code></pre>
<p>这与之前做的事情完全相同,但可能更清楚代码实现了什么</p>