首页 > 解决方案 > 用键和值按字典计算列表中出现的次数

问题描述

使用字典,我试图找出键是否与值一样多次(或更多)出现。因此,例如,我有一个看起来像这样的字典:

expected = { "blue": 2, "red": 1 }

和一个看起来像这样的列表:

results = [ 'green', 'blue', 'blue', 'red' ]

我需要查看蓝色是否出现 2 次或更多次,红色是否出现 1 次或更多次。解决此问题的最佳方法是什么?我试过了:

for k, v in expected.items():
  if results.count(k) >= v:
    // return

但这将匹配任一键,而不是严格检查整个列表。

标签: python

解决方案


你需要它们至少一样大。这意味着您必须先完成循环才能返回成功。任何失败都意味着您可以立即返回。

for k, v in expected.items():
    if results.count(k) < v:
        return False

return True

或者,使用该all函数将其放在一行中:

return all(results.count(k) >= v for k, v in expected.items() )

推荐阅读