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

Python Sort values by first list in 2D array containing list and value

我正在跟踪一个列表,每个列表都有一个百分比支持(百分比值表示频率)。每个支撑都绑定到一组。

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] 中的集合进行排序,然后对整个第一列进行排序

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

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]]