我有一个字符串,并创建了一个包含字符串和值的JSON数组:
idiv
我如何创建一个循环,该循环将搜索amount = 0
a = "asaf,almog,arnon,elbar"
values_li={'asaf':'1','almog':'6','elbar':'2'}
中values_li
上的所有项目,并且对每个项目都会找到它
a
我试图这样做,但是没有用:
amount = amount + value(the value that found from value_li in a)
答案 0 :(得分:0)
正在工作。 我找出我的问题。 v是一个字符串,我尝试使用字符串进行数学运算,因此不得不将v转换为int
amount = amount + int(v)
现在它正在工作:)
答案 1 :(得分:0)
您应谨慎使用:
if k in a:
a
是字符串:"asaf,almog,arnon,elbar"
不是列表。这意味着:
"bar" in a # == True
"as" in a # == True
.. etc可能不是您想要的。
您应该考虑将其拆分为一个数组,然后您将只获得完全匹配项。这样,您可以简单地使用:
a = "asaf,almog,arnon,elbar".split(',')
values_li={'asaf':'1','almog':'6','elbar':'2'}
amount = sum([int(values_li[k]) for k in a if k in values_li])
# 9
答案 2 :(得分:0)
collections.Counter()
是你的朋友:
from collections import Counter
a = "asaf,almog,arnon,elbar"
values_li = Counter({'asaf':1,'almog':6,'elbar':2})
values_li.update(a.split(','))
values_li
这将导致:
Counter({'almog': 7, 'elbar': 3, 'asaf': 2, 'arnon': 1})
如果您想要values_li
中所有值的总和,则只需执行以下操作:
sum(values_li.values())
您的示例中的键/值对将产生13
。