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

时间:2017-09-06 13:49:42

标签: python python-2.7

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导师时没有继续检查是否value=="True",我不知道我哪里出错了。我知道我可以使用sum函数但我有这样的事情,如果我尝试尽可能多地使用数据结构,我将能够开发一种思考代码的方法。

3 个答案:

答案 0 :(得分:4)

<script src="https://openlayers.org/en/v4.3.2/build/ol.js"></script> <!-- Layout of page starts here --> <div id="container" style="width:100%; height: 100%; margin: 0px"> <table width="100%"> <tr> <td colspan="2"> <div id="header"> <table width="100%"> <tr> <td width="15%"> <div id="control-panel"> &nbsp; </div> </td> <td style="text-align: center;" width="85%"> </td> </tr> </table> </div> </td> </tr> <tr> <td width="15%"> &nbsp; </td> <td> <div id="map-canvas"> </div> </td> </tr> </table> </div> <!-- container -->不是value == True

或者,作为Jean-François Fabre points out,只需:

value == "True"

答案 1 :(得分:1)

您正在与字符串"True"而不是布尔True进行比较,您还可以使用内置sum()的表达式以更加pythonic的方式执行您想要的操作,如下所示:

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

答案 2 :(得分:1)

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

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