相关疑难解决方法(0)

使用Python在自定义顺序中对列表进行排序

我有一份清单

mylist = [['123', 'BOOL', '234'], ['345', 'INT', '456'], ['567', 'DINT', '678']]

我想按顺序排序1. DINT2. INT3.BOOL

结果:

[['567', 'DINT', '678'], ['345', 'INT', '456'], ['123', 'BOOL', '234']]

我在stackoverflow中看到过其他类似的问题,但没有类似或容易适用于我.

python sorting list python-2.7

20
推荐指数
1
解决办法
1万
查看次数

Python:如何自定义列表?

Obs:我知道python中的列表不是按顺序修复的,但认为这个列表是.我正在使用Python 2.4

我有一个列表,比如(例如)这个:

mylist = [ ( u'Article', {"...some_data..."}    ) ,
           ( u'Report' , {"...some_data..."}    ) ,
           ( u'Book'   , {"...another_data..."} ) ,
...#continue
]
Run Code Online (Sandbox Code Playgroud)

该变量mylist是从函数中获得的,返回列表的"顺序"会有所不同.所以,有时它就像在例子上.有时候,"报告"会出现在"文章"等之前.

我在此列表中有一个固定的订单(并不是按字母顺序排列).

让我们说我的固定顺序是:'报告','文章','书',......

所以,我想要的是:无论命令'mylist'被实例化,我都要重新排序,让'Report'保持在前面,'Article'在第二,等等......

使用我的"自定义"订单重新排序列表(使用列表中每个项目的元组的第一个元素)的最佳方法是什么?

答案:

我最终得到了这个:

mylist成了一个dicts列表,如下所示:

mylist = [{'id':'Article', "...some_data..."} ,
        ...etc
]
Run Code Online (Sandbox Code Playgroud)

每个dict都有一个必须排序的'id'.

在列表中保存正确的顺序在列表上分配correct_order:

correct_order = ['Report', 'Article', 'Book', ...]
Run Code Online (Sandbox Code Playgroud)

并做:

results = sorted([item for item in results], cmp=lambda x,y:cmp(correct_order.index(x['id']), correct_order.index(y['id'])))
Run Code Online (Sandbox Code Playgroud)

python sorting list

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

list ×2

python ×2

sorting ×2

python-2.7 ×1