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
函数但我有这样的事情,如果我尝试尽可能多地使用数据结构,我将能够开发一种思考代码的方法。
答案 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">
</div>
</td>
<td style="text-align: center;" width="85%">
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td width="15%">
</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