我一直在编写一个脚本,用于检查是否添加了新项或是否增加了项。我创建了一个如下脚本:
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
1条答案
按热度按时间yftpprvb1#
然后,它将返回“True”,因为有一个正在返回的值
否,它不会返回True,它将始终返回一个对象/dict
我想知道如果新项目没有变化或增加,我如何返回“False”?
怎么样
顺便说一句,奇怪的是,你检查他们是否增加了,但你不检查是否有任何减少。