2

在 Python 中,我有一个嵌套列表,如下所示:

[ [[x1,y1,z1], [['0.9', 4], [0.8, 3], [0.5, 10], [0.1, 11]], 
  [[x2,y2,z2], [['1.0', 8], [0.8, 3], [0.2, 1], [0.1, 8]]
...]

所以每个元素都是这样的:

 [[3-tuple], [[val1, occurrences_of_val1], [val2, occurrences_of_val2],...]]

第二个嵌套列表已按第一项(val1 > val2 > val3 ...)排序,但我还希望 3 元组 [x,y,z] 根据两个标准按降序排列:

  1. val1 的值(最高优先)
  2. 在相同 val1 的情况下,最高出现次数_of_val1(如果上述两个值相同,则可能应用于 val2)

我该怎么做呢?可能使用 itemgetter,但在这种情况下我不确定。

4

2 回答 2

7

yourList.sort(key=lambda x: x[1], reverse=True)

于 2012-08-20T14:39:49.647 回答
3

我测试了这个

X=[ [[4,5,6], [[3.0, 4], [0.8, 3], [0.5, 10], [0.1, 11]]],
  [[2,1,3], [[2.0, 8], [0.8, 3], [0.2, 1], [0.1, 8]]]]
>>> X.sort(key=lambda x: x[1])
>>> X
[[[2, 1, 3], [[2.0, 8], [0.80000000000000004, 3], [0.20000000000000001, 1], [0.10000000000000001, 8]]], [[4, 5, 6], [[3.0, 4], [0.80000000000000004, 3], [0.5, 10], [0.10000000000000001, 11]]]]

最重要的是,X.sort(key=lambda x: x[1])是按 X 的第二个元素排序,也就是按这个元素[[val1, occurrences_of_val1], [val2, occurrences_of_val2],...]。隐含地,它是按 排序val1,然后在相等的情况下按occurrences_of_val1...

于 2013-05-08T08:12:12.257 回答