如何获取列表中空字典的数量

时间:2015-07-07 01:29:10

标签: python python-3.x dictionary

我有一个这种格式的列表[['A', 'B'], {}, {}, {}]我试图获取列表中空字典的数量,这是正确做到这一点的最pythonic方式,我已经能够做到这一点但我发现自己必须在这个过程中创建一个临时列表是否有更有效的方法来做到这一点而不创建临时列表?

a = [['A', 'B'], {'test': 'lang'}, {}, {}]
tmp_list = list()

for i in a:
    if isinstance(i, dict):
        if len(i) == 0:
            tmp_list.append(i)

print(len(tmp_list))

2 个答案:

答案 0 :(得分:5)

正如卢克评论的那样,算上吧

a = [['A', 'B'], {'test': 'lang'}, {}, {}]
print(a.count({}))

答案 1 :(得分:3)

此处generator expression非常方便,内置sum功能:

a = [['A', 'B'], {'test': 'lang'}, {}, {}]
count = sum(1 for x in a if isinstance(x, dict) and not x)
print count
# 2

此外,如果您只想要空的,则不需要检查len;由于空字典在布尔上下文中评估为Falsenot x就足够了。