如何压缩这个?

mes*_*ria 3 python dictionary

我有一本词典字典.我想算一下这些词典中有多少元素的"状态"设置为"连接".

这是我的工作代码:

connecting = 0
for x in self.servers:
    if self.servers[x]["status"] == "connecting": connecting += 1
Run Code Online (Sandbox Code Playgroud)

有没有办法压缩这个?我想的是:

connecting = [1 if self.servers[x]["status"] == "closed" else 0 for x in self.servers]
Run Code Online (Sandbox Code Playgroud)

但它只返回0和1的列表,不会将1添加到连接,这是我的预期.

Kas*_*mvd 7

您可以在sum函数中使用生成器表达式:

sum(x["status"]=="connecting" for x in self.servers.values()) 
Run Code Online (Sandbox Code Playgroud)

请注意,因为结果x["status"]=="connecting"是一个布尔值,如果它是True,python会将它评估为1,所以最后它将返回符合条件的字典数.