Python如何判断带键值对的字典是否为另一个字典的子集
问题原因分析
- 你原代码的判断逻辑用了
==判断值相等,不符合需求里「小于等于」的要求 - 你给出的示例数据本身就不满足子集条件:
resources字典中键x对应的值为2,available_resources中键x对应的值为1,2>1,所以判断结果本来就应为False
正确实现方案
你可以用如下代码实现需求:
def is_resource_subset(resources, available_resources): return all( key in available_resources and val <= available_resources[key] for key, val in resources.items() )
逻辑说明
- 遍历
resources的所有键值对,逐个校验两个条件:- 当前键在
available_resources中存在 resources中当前键对应的值小于等于available_resources中同键的值
- 当前键在
all()函数会在所有键值对都满足上述两个条件时返回True,只要有一个不满足就返回False,完全匹配你的需求- 你可以测试把
resources['x']修改为1,此时所有键值对都满足要求,函数会返回True
内容的提问来源于stack exchange,提问作者Suleyman Kiani
相关产品推荐
相关产品推荐

