Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Lamba对有序数据进行排序_Python_Sorting_Lambda_Ordereddictionary - Fatal编程技术网

Python 使用Lamba对有序数据进行排序

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'

我必须使用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'] = ("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])打印(输出)
,输出将包含已排序的词典