我有一个dict列表:
d = [{'status': u'Working', 'name': u'AR000001'}, {'status': u'Working', 'name': u'AR000002'}, {'status': u'Working', 'name': u'AR000003'},{'status': u'Working', 'name': u'AR000013'}]
Run Code Online (Sandbox Code Playgroud)
我想使用状态键计算这里的工作项
我尝试使用for循环,这工作正常:
print "total",len(d)
wcount = 0
for i in d:
if i['status'] == "Working":
wcount += 1
print "working count",wcount
Run Code Online (Sandbox Code Playgroud)
但是我通过使用列表理解在这里遗漏了一些东西:
count = [sum(li) for li in d if li['status'] == 'Working']
print count
Run Code Online (Sandbox Code Playgroud)
错误:
count = [sum(li) for li in d if li['status'] == 'Working']
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Run Code Online (Sandbox Code Playgroud)
使用sum(li),您试图将字典键添加到由提供的默认int 0起始值sum; 字典在迭代时自然会提供密钥.
您可以在比较中对bool值应用sum,这可以很容易地强制为1 True或0 False:
count = sum(li['status'] == 'Working' for li in d)
Run Code Online (Sandbox Code Playgroud)