你好我想弄清楚如何通过多个变量对嵌套列表进行排序,而有些不会按1,2,3排序而是按预定列表排序。使用对象列表排序嵌套列表
例如:
List=[[XD,1],[XD,3],[XD,2],[X5,2],[X5,3],[XT,2]]
这将导致:
[[XD,1],[XD,2],[XD,3],[XT,2],[X5,2],[X5,3]]
第一元件将由sortbylist和数字顺序简单地在第二元件进行排序。
SortByList={'XD': 'A', 'XT':'B', 'XQ': 'C','X5': 'D'}
我当前已经尝试使用代码:
List.sort(key=SortByList.__getitem__ x: x[0])
List=sorted(List,key=itemgetter(1))
然而,这似乎并没有工作。任何提示?
一个做到这一点的最简单的方法是:
Result=sorted(List, key=lambda x:(SortByList[x[0]],x[1]))
这在python中直接运行时效果很好。然而,当你把它放在一个程序里面时,它似乎并没有对列表进行排序。有任何想法吗? – Daniel 2012-02-06 20:33:47
@Ophion:这段代码只是输出结果;它不会将其分配回“List”。将其更改为'List = sorted(List,key = ...)'或使用'List.sort(key = ...)'。 – NPE 2012-02-06 20:39:37