使用键和值按字典计算列表中出现的次数
使用字典,我试图找出键出现的次数(或更多)是否与值一样多。因此,例如我有一个看起来像这样的字典:
expected = { "blue": 2, "red": 1 }
和一个看起来像这样的列表:
results = [ 'green', 'blue', 'blue', 'red' ]
我需要查看蓝色是否出现 2 次或更多次,红色是否出现 1 次或更多次。解决这个问题的最佳方法是什么?我试过了:
for k, v in expected.items():
if results.count(k) >= v:
// return
但这将匹配任一键,而不是严格检查整个列表。
回答
你需要他们的所有是至少一样大。这意味着您必须完成循环才能返回成功。任何失败都意味着您可以立即返回。
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() )