Python按包含列表和值的2D数组中的第一个列表对值进行排序

时间:2017-09-15 19:33:43

标签: python arrays sorting 2d

我正在跟踪列表,每个集合都有百分比支持(百分比值表示频率)。每个支持都与一组相关联。

X:

[('C', 'A'), 66.667]
[('T', 'A'), 50.0]
[('C', 'D'), 66.667]
[('C', 'T'), 66.667]
[('C', 'W'), 83.333]
[('A', 'W'), 66.667]
[('W', 'T'), 50.0]
[('W', 'D'), 50.0]

我希望对数组进行排序,忽略支持,使其看起来像这样:

[('A', 'C'), 66.667]
[('A', 'T'), 50.0]
[('A', 'W'), 66.667]
[('C', 'D'), 66.667]
[('C', 'T'), 66.667]
[('C', 'W'), 83.333]
[('D', 'W'), 50.0]
[('T', 'W'), 50.0]

对x [0]中的集合进行排序,然后对整个第一列进行排序

1 个答案:

答案 0 :(得分:2)

对元组进行排序,然后对列表进行排序:

lst = sorted([[tuple(sorted(x)), y] for x, y in lst], key=lambda x: x[0])
print(lst)
[[('A', 'C'), 66.667], 
 [('A', 'T'), 50.0], 
 [('A', 'W'), 66.667], 
 [('C', 'D'), 66.667], 
 [('C', 'T'), 66.667], 
 [('C', 'W'), 83.333], 
 [('D', 'W'), 50.0], 
 [('T', 'W'), 50.0]]