python-3.x 如果值存在,如何打印输出,否则返回False?

mwyxok5s  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(166)

我一直在编写一个脚本,用于检查是否添加了新项或是否增加了项。我创建了一个如下脚本:

STOCK_MAP = {
    'low': 1,
    'medium': 2,
    'high': 3
}

previous_data = {
    'item': {
        '1': 'HIGH',
        '2': 'HIGH',
        '3': 'HIGH',
        '4': 'MEDIUM',
    }
}

data = {
    'item': {
        '1': 'LOW',
        '2': 'HIGH',
        '3': 'HIGH',
        '4': 'HIGH',
        '5': 'HIGH',
    }
}

def check_changes(data: dict):
    found_change = {'new': [], 'increased': []}
    for att, value in data['item'].items():
        if not previous_data.get('item', {}).get(att, {}):
            found_change['new'].append(att)
        elif STOCK_MAP[value.casefold()] > STOCK_MAP[previous_data['item'][att].casefold()]:
            found_change['increased'].append(att)
    return found_change

if new_data := check_changes(data):
    print(new_data)

每当有新项目添加或/和增加时,此脚本就在实际打印的地方工作。但是,如果我将以前的数据更改为data =,意思如下:

previous_data = {
    'item': {
        '1': 'HIGH',
        '2': 'HIGH',
        '3': 'HIGH',
        '4': 'MEDIUM',
    }
}

data = {
    'item': {
        '1': 'HIGH',
        '2': 'HIGH',
        '3': 'HIGH',
        '4': 'MEDIUM',
    }

if new_data := check_changes(data):
    print(new_data)

然后,它将返回“True”,因为有一个值正在返回,我想知道我如何返回“False”,如果没有在新的项目或增加的变化?

预期

如果有增加或/和添加新项目,那么我想打印出:

Found Change! (Item Added: 1, 2, 3)  <-- Only if new Item has been added

Found Change! (Level Increased: 3, 4, 5) <--- Only if level increased

Found Change! (Item Added: 1, 2, 3 & Level Increased: 5, 6, 7) <-- If both values are true

如果没有更改,则返回False

yftpprvb

yftpprvb1#

然后,它将返回“True”,因为有一个正在返回的值
否,它不会返回True,它将始终返回一个对象/dict
我想知道如果新项目没有变化或增加,我如何返回“False”?
怎么样

if(len(found_change['new']) == 0 and len(found_change['increased']) == 0):
        return False
    return found_change

顺便说一句,奇怪的是,你检查他们是否增加了,但你不检查是否有任何减少。

相关问题