0

在以下代码片段中:

for record in records:    
  max = record.get_values()['max']

在这段代码中,我从记录中获得最大值。“记录”在这里是一个生成器对象。问题是,在某些情况下 max 字段将不存在。所以在这些情况下我得到了 KeyError 。max = 0如果 max 不存在于记录中,我想分配。到目前为止,我已经有了这个解决方案:

try:    
  max = record.get_values()['max']
except:
  max = 0

但是我想避免在这种情况下使用 try-except ,因为这样的行还有很多,它会让我的代码看起来很乱。如何在不使用 try-except 或长行代码的情况下实现相同的功能?如果这可以在一行代码中完成,那将是更可取的。

4

2 回答 2

2

您可以使用它get()来避免键错误。它将返回None丢失key:如果record.get_values()返回dict使用:

for record in records:    
  max = record.get_values().get('max')


# will return **None** for missing key by default, you can add a default value if needed.

一个简单的例子是:

emp_dict = {'Name': 'Pankaj', 'ID': 1}

emp_id = emp_dict.get('ID')
emp_role = emp_dict.get('Role')
emp_salary = emp_dict.get('Salary', 0)

print(f'Employee[ID:{emp_id}, Role:{emp_role}, Salary:{emp_salary}]')

# Output: Employee[ID:1, Role:None, Salary:0]
于 2020-11-04T12:38:33.497 回答
-1

您可以使用三元运算符检查字典中是否存在键“max”。

max = record.get_values()["max"] if "max" in record.get_values().keys() else 0
于 2020-11-04T12:38:00.240 回答