一组 13 个传感器传输每 5 分钟读取一次的数字数据。为了捕获这些值,我使用了列表字典:
Sensors = {
'Sensor1':[10.52,12.45,15.70],
'Sensor5':[12.32,22.80,30.42],
'Sensor3':[4.7,3.4,2.1],
'Sensor8':[2.34,4.28,7.10],
'Sensor4':[10.64,14.76,4.25],
'Sensor2':[3.21,7.88,9.22],
'Sensor6':[4.11,9.32,2.70],
'Sensor9':[11.45,14.72,8.30],
'Sensor7':[6.10,3.98,10.66],
'Sensor10':[7.22,8.67,10.99],
'Sensor13':[1.19,4.65,0.87],
'Sensor12':[2.10,5.46,3.21],
'Sensor11':[5.80,8.22,14.39]
}
我需要对这个列表进行排序,以便具有正增长的传感器出现在顶部。 为了实现这个目标,我创建了另一个字典 DeltaValues,其中包含传感器的名称以及捕获的最后一个值和第一个值之间的差异:
DeltaValues={}
for x, y in Sensors.items():
if len(y) > 1:
DeltaValues[x] = format(y[-1] - y[0],'.2f')
else:
DeltaValues[x] = format(y[0],'.2f')
我用这个语法来排序:
sorted_d = {k: v for k, v in sorted(DeltaValues.items(), key=lambda x: x[1])}
但结果不是我所期望的:
print(sorted_d)
{'Sensor13': '-0.32',
'Sensor6': '-1.41',
'Sensor3': '-2.60',
'Sensor9': '-3.15',
'Sensor4': '-6.39',
'Sensor12': '1.11',
'Sensor5': '18.10',
'Sensor10': '3.77',
'Sensor7': '4.56',
'Sensor8': '4.76',
'Sensor1': '5.18',
'Sensor2': '6.01',
'Sensor11': '8.59'}
请您参考如下方法:
Dicts 不保证按放入的顺序返回值。
考虑有序字典。 https://docs.python.org/3/library/collections.html#collections.OrderedDict
