Python 使用Lamba对有序数据进行排序
我必须使用sorted方法和lambda对python中的有序字典进行排序。我按键排序,键是字符串 这是我的字典代码:Python 使用Lamba对有序数据进行排序,python,sorting,lambda,ordereddictionary,Python,Sorting,Lambda,Ordereddictionary,我必须使用sorted方法和lambda对python中的有序字典进行排序。我按键排序,键是字符串 这是我的字典代码: sensors = OrderedDict() sensors['4213'] = ("STEM Center", 0) sensors['4201'] = ("Foundations Lab ", 1) sensors['4204'] = ("CS Lab ", 2) sensors['4218'] = ("Workshop Room ", 3) sensors['4205'
sensors = OrderedDict()
sensors['4213'] = ("STEM Center", 0)
sensors['4201'] = ("Foundations Lab ", 1)
sensors['4204'] = ("CS Lab ", 2)
sensors['4218'] = ("Workshop Room ", 3)
sensors['4205'] = ("Tiled Room ", 4)
sensors['Out'] = ("Outside ", 5)
我该如何排序,使4201是第一个,然后数字增加,最后一个出来
我试着实现它,以及它的变体,但它不起作用,元素的顺序保持不变
OrderedDict(sorted(sensors.items(), key=lambda x: x[0])
变化:
-sorted(sensors.items(), key=lambda x: x[0])
-creating a regular dictionary called sensors and then making a new ordered dictionary using OrderedDict(sorted(sensors.items(), key=lambda x: x[0])
谢谢大家! OrderedDict中的键顺序等于插入顺序。要对其进行排序,请按所需顺序从头创建一个新的
import collections
# source does not have to be sorted, a regular dict will do
sensors = {}
sensors['4213'] = ("STEM Center", 0)
sensors['4201'] = ("Foundations Lab ", 1)
sensors['4204'] = ("CS Lab ", 2)
sensors['4218'] = ("Workshop Room ", 3)
sensors['4205'] = ("Tiled Room ", 4)
sensors['Out'] = ("Outside ", 5)
sorted_keys = sorted(sensors) # key=... optional
sorted_sensors = collections.OrderedDict((key, sensors[key]) for key in sorted_keys)
如果只想对键进行排序,为什么要使用
items()
?这里的预期输出是什么?我得到了订单([('4201',('Foundation Lab',1)),('4204',('CS Lab',2)),('4205',('Tiled Room',4)),('4213',('STEM Center',0)),('4218',('Workshop Room',3)),('Out',('Out',5))
,这就是你提到的<代码>我该如何排序,使4201是第一个,然后数字增加,最后一个出来?您提供的代码(缺少尾随)
)与您描述的预期输出完全一致。orderedict()
返回一个新排序的dict-它不会对旧的dict进行排序。这意味着Out=orderedict(已排序的(sensors.items(),key=lambda x:x[0])打印(输出)
,输出将包含已排序的词典