我有列表my_list
例如列表my_list
例如,Python排序列表在多个级别上,并与自定义订单
[
['item 3.1', 'item 3.2', 'item 3.3', 'item 3.4', 'item 3.5'],
['item 3.1', 'item 3.2', 'item 3.2', 'item 3.2', 'item 3.2'],
['item 3.1', 'item 3.2', 'item 3.2', 'item 3.6', 'item 3.2'],
['item 3.1', 'item 2.2', 'item 2.4', 'item 2.7', 'item 2.5'],
['item 2.1', 'item 2.2', 'item 2.3', 'item 2.4', 'item 2.5'],
['item 1.1', 'item 1.2', 'item 1.3', 'item 1.4', 'item 1.5'],
['item 4.1', 'item 4.2', 'item 4.3', 'item 4.4', 'item 4.5'],
['item 1.1', 'item 1.2', 'item 1.3', 'item 1.5', 'item 1.5']
]
我要订购多层次的这份名单与水平的1是一个客户订单,但不知道如何做到这一点。
例如我想先订购第一件,然后在订单内订购,然后在第三件订购,然后在订单内订购,第四件订购。但我想的第一个项目被责令/排序在这个特定的顺序,而不是按字母顺序排列:
item 4.1
item 2.1
item 3.1
item 1.1
所以最终名单(排序后)将是:
[
['item 4.1', 'item 4.2', 'item 4.3', 'item 4.4', 'item 4.5']
['item 2.1', 'item 2.2', 'item 2.3', 'item 2.4', 'item 2.5'],
['item 3.1', 'item 3.2', 'item 3.2', 'item 3.2', 'item 3.2'],
['item 3.1', 'item 3.2', 'item 3.2', 'item 3.6', 'item 3.2'],
['item 3.1', 'item 3.2', 'item 3.3', 'item 3.4', 'item 3.5'],
['item 3.1', 'item 2.2', 'item 2.4', 'item 2.7', 'item 2.5'],
['item 1.1', 'item 1.2', 'item 1.3', 'item 1.4', 'item 1.5'],
['item 1.1', 'item 1.2', 'item 1.3', 'item 1.5', 'item 1.5'],
]
我知道我可以排序了多层次做:
s = sorted(my_list, key=itemgetter(0,2,3))
但这会按字母顺序排序所有这些,我不知道该怎么办设置的首列由自定义排序。
该具体项目顺序的来源是什么?它是一个项目清单?这是一个映射吗? – 2013-02-28 14:48:04
'key = map(d .__ getitem__,itemgetter(0,2,3)(my_list))'哪里'd = {4.1:0,2.1:1,3.1:2,1.1:3}''怎么样? 因为和我一样睡眠不足,所以我不想让我的第三个错误发生在这一天,但是如果任何人都能看到使用它的方法,请做 – inspectorG4dget 2013-02-28 14:51:52
该列表来自db查询并且是项目列表。他们回来的顺序,他们被添加到数据库 – John 2013-02-28 14:52:47