比较嵌套Dicts列表中的项目并执行简单的算术运算

时间:2017-07-25 22:33:16

标签: python python-3.x dictionary

如何列出清单" image_list"进入一个函数measure_accuracy然后让它返回实际和预测的次数相同?在这种情况下,它将返回3.

列表:

image_list = [
  { 'path':'1.jpg', 'actual':{'dog'}, 'predicted':{'dog'} },
  { 'path':'2.jpg', 'actual':{'dog'}, 'predicted':{'cat'} },
  { 'path':'3.jpg', 'actual':{'cat'}, 'predicted':{'cat'} },
  { 'path':'4.jpg', 'actual':{'cat'}, 'predicted':{'dog'} },
  { 'path':'5.jpg', 'actual':{'dog'}, 'predicted':{'dog'} }
]

所以我想要的是比较列表中的每个项目,如果这两个项目是相同的添加到变量,那么最后返回该变量。 我只是不知道到那里的代码。

我想也许像是

for actual, predicted in image_list:
    if actual == predicted:
        count = count + 1

1 个答案:

答案 0 :(得分:1)

In [7]: sum(x['actual'] == x['predicted'] for x in image_list)
Out[7]: 3

这样:

def measure_accuracy(image_list):
    return sum(x['actual'] == x['predicted'] for x in image_list)

total = measure_accuracy(image_list)
average = total / len(image_list)

简要说明这里发生的事情:

x['actual'] == x['predicted']

评估TrueFalse。在Python中,True == 1False == 0,所以每次预测值等于实际值时我们得到1,否则为0.所以我们的列表看起来像这样:

[1, 0, 1, 0, 1]

然后我们使用sum函数将它们全部加在一起得到3。