代码优化: flux = sub_dict['flux'] if flux == 'null' or flux == '' or flux == ' ': flux = -999999
时间: 2024-02-07 20:01:48 浏览: 25
这段代码可以优化为一行:
```
flux = sub_dict.get('flux', -999999) if sub_dict.get('flux') not in {'null', '', ' '} else -999999
```
这里用了 dict 的 get 方法来获取 flux 的值,如果 flux 在 sub_dict 中不存在,则默认返回 -999999。如果 flux 在 sub_dict 中存在,但其值为 'null'、'' 或者 ' ' 中的一种,则将 flux 的值设置为 -999999。这样可以避免多个 if 判断语句,使代码更简洁。
相关问题
alarm_dict[env_time] = alarm_dict[env_time].append({d_datetime: [flux, 1]})
这段代码会报错。`list.append()` 方法没有返回值,它会直接在原列表中添加元素,所以不能将其返回值赋给字典的某个键。正确的写法应该是:
```
if env_time not in alarm_dict:
alarm_dict[env_time] = []
alarm_dict[env_time].append({d_datetime: [flux, 1]})
```
首先判断 `env_time` 是否已经在字典 `alarm_dict` 中,如果没有,则先将其初始化为空列表。然后在列表末尾添加一个新的字典,字典的键为 `d_datetime`,值为一个列表,其中第一个元素是 `flux`,第二个元素是 `1`。这样就可以实现向字典中不断添加新的字典的功能了。
if len(alarm_dict) == 0: if flux > source_query_result[item - 1][1] > source_query_result[item - 2][1] > source_query_result[item - 3][1]: # print(f'出现异常值,时间:{d_datetime}, 值:{flux}') alarm_dict[d_datetime] = [{d_datetime: [flux, 1]}] env_time = d_datetime else: # 非第一次出现超出阈值进行记录操作 alarm_dict[env_time] = alarm_dict[env_time].append({d_datetime: [flux, 1]})
这段代码中也有问题,`list.append()` 方法没有返回值,所以不能将其返回值赋给字典的某个键。正确的写法应该是:
```
if len(alarm_dict) == 0:
if flux > source_query_result[item - 1][1] > source_query_result[item - 2][1] > source_query_result[item - 3][1]:
# print(f'出现异常值,时间:{d_datetime}, 值:{flux}')
alarm_dict[d_datetime] = [{d_datetime: [flux, 1]}]
env_time = d_datetime
else:
# 非第一次出现超出阈值进行记录操作
if env_time not in alarm_dict:
alarm_dict[env_time] = []
alarm_dict[env_time].append({d_datetime: [flux, 1]})
```
首先判断字典 `alarm_dict` 是否为空,如果是,则将当前时间 `d_datetime` 作为键,一个列表 `[{d_datetime: [flux, 1]}]` 作为值,添加到字典中。同时将 `env_time` 设置为当前时间,以便后续的记录操作。如果不是第一次出现超出阈值,则判断 `env_time` 是否在字典 `alarm_dict` 中,如果不在,则将其初始化为空列表。然后在列表末尾添加一个新的字典,字典的键为 `d_datetime`,值为一个列表,其中第一个元素是 `flux`,第二个元素是 `1`。这样就可以实现向字典中不断添加新的字典的功能了。