gcurrent = {1: [[1, 2, 31], [1, 2, 41], [1, 2, 10], [1, 2, 45], [1, 2, 51], [1, 2, 21]], 4: [[4, 2, 2], [4, 2, 1], [4, 2, 4], [4,2,3], [4, None, 5], [4, None, None]]}判断每组里的小列表的第二个数是否是0,必须是整组全部为0输出是,但凡只要有一个不为0就输出否,但凡里面有一个没有数据或者是None时输出无法判断,这个没有数据是只要小列表的第二个,和其他无关,只判断小列表的第二个有没有数据
时间: 2023-11-06 21:04:07 浏览: 110
好的,我理解了你的问题。你可以按照以下代码来实现:
```
def check_zero(gcurrent):
for group in gcurrent.values():
all_zeros = True
for sublist in group:
if len(sublist) < 2 or sublist[1] is None:
print("无法判断")
all_zeros = False
break
elif sublist[1] != 0:
all_zeros = False
if all_zeros:
print("是")
else:
print("否")
```
你可以将你的字典传递给这个函数。它将遍历每个组中的所有子列表,检查第二个元素是否为0。如果没有数据或为None,则输出“无法判断”。如果整个组的所有子列表的第二个元素都为0,则输出“是”。否则,输出“否”。
相关问题
这是数据gcurrent = {1: [[1, 5, 3], [1, 5, 7], [1, 7, 6], [1, 10, 5], [1, 6, 4], [1, 9, 9]], 4: [[4, 6, 6], [4, 8, 1], [4, 9, 4], [4, 5, 3], [4, 1, 5], [4, 8, 9]]} 第二个数为模块电流之和,第三个数为负载电流 需求:放电前负载电流与模块电流之和偏差率 模块电流1~15之和,与负载电流的偏差率并打标签,即: 偏差率 = |(模块电流1~15之和)- 负载电流 | / 负载电流 多个点可取平均值,考虑去除噪点和无效点 如负载电流不存在或无法判断,则打标签“无法判断”。
好的,你的需求是计算放电前负载电流与模块电流之和偏差率,并将模块电流1~15之和与负载电流的偏差率打标签,如果负载电流不存在或无法判断,则打标签“无法判断”。针对这个需求,我可以给出一个代码实现,你可以参考一下:
```
def calculate_deviation_rate(gcurrent):
deviation_rates = []
for key in gcurrent:
total_module_current = sum([item[1] for item in gcurrent[key]])
total_load_current = sum([item[2] for item in gcurrent[key]])
if total_load_current == 0:
deviation_rate = "无法判断"
else:
deviation_rate = abs(total_module_current - total_load_current) / total_load_current
if deviation_rate > 0.1: # 偏差率大于0.1认为是噪点或无效点,去除
continue
deviation_rates.append(deviation_rate)
if len(deviation_rates) == 0:
return "无法判断"
else:
avg_deviation_rate = sum(deviation_rates) / len(deviation_rates)
if avg_deviation_rate <= 0.05:
return "标签1"
elif avg_deviation_rate <= 0.1:
return "标签2"
else:
return "标签3"
```
这个函数的输入参数是`gcurrent`,一个字典类型的数据,其中键表示模块编号,值是一个列表,列表中每个元素是一个长度为3的列表,分别表示模块编号、模块电流和负载电流。函数返回值是一个字符串类型的标签,表示模块电流1~15之和与负载电流的偏差率所对应的标签。