Skip to main content
 首页 » 编程设计

Python之对列表字典中的值进行排序

2025年05月04日15cloudgamer

一组 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