如何按内部列表的排序索引对字符列表进行排序?

时间:2017-01-30 08:20:14

标签: python string list

我想对列表进行排序。

这是我的列表输入列表:

[('H', 'A'), ('H', 'C'), ('H', 'K'), ('A', 'C'), ('A', 'K'), ('C', 'K')]

我希望输出像这样

[('A', 'C'), ('A', 'H'), ('A', 'K'), ('C', 'H'), ('C', 'K'), ('H', 'K')]

2 个答案:

答案 0 :(得分:3)

您的输出表明您需要对元组和最终列表中的两个元素进行排序。所以就这样做:

l = [('H', 'A'), ('H', 'C'), ('H', 'K'), ('A', 'C'), ('A', 'K'), ('C', 'K')]

print(sorted([tuple(sorted(x)) for x in l]))

结果:

[('A', 'C'), ('A', 'H'), ('A', 'K'), ('C', 'H'), ('C', 'K'), ('H', 'K')]

这会使用您的元组重建列表,现在已排序,并对这些元组执行sort

答案 1 :(得分:0)

您可以尝试这样的事情:

data=[('H', 'A'), ('H', 'C'), ('H', 'K'), ('A', 'C'), ('A', 'K'), ('C', 'K')]


print(sorted(list(map(lambda i:(i[0],i[1]) if i[0]<i[1] else (i[1],i[0]),data))))

输出:

[('A', 'C'), ('A', 'H'), ('A', 'K'), ('C', 'H'), ('C', 'K'), ('H', 'K')]