Python程序,用于计算字典中与键相关的值

2024-10-04 11:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

def wut(data):
    s = 0
    for dic in data:
        for i,value in dic.items():
            if value == "True":
                s += 1
    return s

data = [{'id': 1, 'success': True, 'name': 'Lary'},
        {'id': 2, 'success': False, 'name': 'Rabi'}, 
        {'id': 3, 'success': True, 'name': 'Alex'}]
wutewa = data
print wut(wutewa)

您好,上面的代码在输入python tutor时没有检查value=="True",我不确定哪里出错了。我知道我可以使用sum函数,但我有一件事,如果我尝试使用尽可能多的数据结构,我将能够开发一种思考代码的方法。你知道吗


Tags: 代码nameinidtruefordataif
3条回答

找到多少项是“真实”值的更简单方法是使用列表理解:

data = [{'id': 1, 'success': True, 'name': 'Lary'},
    {'id': 2, 'success': False, 'name': 'Rabi'}, 
    {'id': 3, 'success': True, 'name': 'Alex'}]

def wut(d):
   return sum(sum(bool(b) for b in i.values()) for i in d)

print(wut(data))

输出:

8

应该是value == True而不是value == "True"

或者,作为Jean-François Fabre points out,简单地说:

if value:
     s += 1

与字符串"True"而不是布尔值True进行比较时,还可以使用带有内置sum()的表达式以更具python风格的方式执行以下操作:

def wut(data):
    return sum(1 for dic in data for v in dic.values() if v is True)

相关问题 更多 >