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

问题描述:

我跟踪一个列表,并且每个集合都有一个百分比支持(百分比值表示频率)。每个支持都绑定到一组。Python按包含列表和值的二维数组中的第一个列表排序值

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],则整个第一列

+0

检查出['sorted'](https://docs.python.org/3/library/functions.html#sorted)内置函数。 –

排序的元组,然后排序列表:

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

您不需要为外部呼叫指定'sorted'键。 –

+0

@ZachGates哦,是的,我喜欢。我不想假设元组永远不会相连,在这种情况下,无键排序会使用百分比打破关系,这不是他们想要的。 –

+1

够公平的。在再次阅读问题后,OP确实表示忽略百分比。好答案。 –