我想对列表进行排序。
这是我的列表输入列表:
[('H', 'A'), ('H', 'C'), ('H', 'K'), ('A', 'C'), ('A', 'K'), ('C', 'K')]
我希望输出像这样
[('A', 'C'), ('A', 'H'), ('A', 'K'), ('C', 'H'), ('C', 'K'), ('H', 'K')]
答案 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')]