Python 如何根据内部列表的排序索引对字符列表进行排序?
我想对列表进行排序 以下是我的列表输入列表:Python 如何根据内部列表的排序索引对字符列表进行排序?,python,string,list,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')] 您的输出表明您需要对元组中的元素和最终列表进行排序。所以,只要做: l = [('H', 'A'), ('H', 'C'), ('H', '
[('H', 'A'), ('H', 'C'), ('H', 'K'), ('A', 'C'), ('A', 'K'), ('C', 'K')]
我希望输出像这样
[('A', 'C'), ('A', 'H'), ('A', 'K'), ('C', 'H'), ('C', 'K'), ('H', 'K')]
您的输出表明您需要对元组中的元素和最终列表进行排序。所以,只要做:
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')]
这将使用您的元组重建列表,现在已在内部排序,并对这些元组执行排序。您可以尝试以下操作:
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))))
啊,你的意思是你也想对包含的元组进行排序?你确定这是列表的语法吗?输出显示内部元组也需要排序。另外,请分享你自己解决问题的尝试和你的研究。嗯,我认为你使用了列表理解,并且很高兴,现在我看到您使用生成器表达式,现在我不高兴…:-)对于某些操作,列表理解会快得多,因为结果无论如何都会转换为列表。除了
str之外,sorted
。join
就是其中之一。如果您想更快:排序(map(iteration\u utilities.chained(sorted,tuple),lst))
(需要一个,但只是作为一个“很好的信息”:D)哦,对了:排序
需要立即提供完整的列表!会修好的!我自己用str.join
评论所有帖子。我不习惯这个双括号的东西。总有一天要做点什么。您的这个sorted(map
解决方案也需要重建列表,因为map
返回一个迭代器。但是iteration\u实用程序。chained(sorted,tuple)
不需要经过中间的任何python层,因为所有3个函数都是用C实现的。这提供了比丢失更快的速度。
[('A', 'C'), ('A', 'H'), ('A', 'K'), ('C', 'H'), ('C', 'K'), ('H', 'K')]