在字符串python中遍历json数组

时间:2018-11-17 22:00:37

标签: python json

我有一个字符串,并创建了一个包含字符串和值的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)

3 个答案:

答案 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