找出一本词典的元素是否比另一本词典的元素大

2024-05-15 06:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望有一个循环(例如While循环),检查字典中的所有元素是否都比其他字典中的元素大。 这些是需要检查的需求字典和两个示例字典:

requirements = {"happiness":9, "money": 100}

person1 = {"happiness": 15, "money": 3200}
person2 = {"happiness": 4, "money": 5000}

While循环如下所示:

while person >= requirements:
    p = Counter(person)
    p.subtract(requirements)
    person = dict(p)

当它检查这个人是否满足要求时,我希望它只有在满足所有要求时才是真的

注意:while循环中从person中减去需求的部分可以忽略,它与问题无关,但它是我正在使用的代码


Tags: 代码元素示例字典counterdictrequirementsperson
3条回答

希望我的问题能给你启发。我的函数bigger_than_reqiurements()使用在require中找到的所有键检查一个person。只有当所有值都大于reqiure时,它才会返回True

#!/usr/bin/env python3

def bigger_than_requirements(person, require):
    for key in require:
        if person[key] <= require[key]:
            return False

    return True

if __name__ == '__main__':
    all_persons = [{"happiness": 15, "money": 3200},
                   {"happiness": 4, "money": 5000}]
    requirements = {"happiness": 9, "money": 100}

    for person in all_persons:
        if bigger_than_requirements(person, requirements):
            print('Bigger: {}'.format(person))

如果键在person中不存在,还可以为KeyError添加异常处理

try:
    if person[key] <= require[key]:
        return False
except KeyError:
    return False

解决此类问题不需要Python中的显式循环,请使用以下理解:

all(value > requirements[key] for key, value in person1.items())

我不确定while循环是用来做什么的,但我认为在这种情况下,一个简单的for循环就足够了

from operator import gt

people = [person1, person2]
for person in people:
    thresholds = [gt(person.get(k), requirements.get(k, 0)) for k in person.keys()]
    if all(thresholds):
        print(f'Person  > {person} meets requirements')

Person  > {'happiness': 15, 'money': 3200} meets requirements

注意:f字符串仅适用于>;=Python 3.6版

相关问题 更多 >

    热门问题