如何根据python列表的元素(索引为零[0]处的元组)对python列表进行排序

如何根据python列表的元素(索引为零[0]处的元组)对python列表进行排序,python,python-3.x,sorting,Python,Python 3.x,Sorting,我这里有一个python列表 my_list = [("ww","hello"),("www","world"),("w","sardines")] 因此,我想根据tuple元素的第一个索引的长度值对这个列表进行排序,正如您可以看到的,这是字母“w”。更具体地说,输出应该是这样的 my_list = [("w","sardines"),

我这里有一个python列表

my_list = [("ww","hello"),("www","world"),("w","sardines")]
因此,我想根据tuple元素的第一个索引的长度值对这个列表进行排序,正如您可以看到的,这是字母
“w”
。更具体地说,输出应该是这样的

my_list = [("w","sardines"),("ww","hello"),("www","world")]
我已经为此搜索了很多排序技术,但我找到了那些仅使用字符串元素的排序技术。我在考虑使用一种排序算法,比如冒泡排序、合并排序、插入或任何其他排序算法。。。但我认为我在这一部分迷失了方向,而且我认为有一种更好的方法可以做到这一点,甚至不用使用排序算法。我觉得有一种更简单的方法,比如调用
.sort()
函数

非常感谢你的帮助!很高兴在这个伟大的社区提出问题!谢谢大家!

试试这个:

my_list = [("ww","hello"),("www","world"),("w","sardines")]

def take_el(elem):
    return len(elem[0])

sorted(my_list, key=take_el)
还是和lambda一起

sorted(my_list, key = lambda x: len(x[0]))

使用此简单技术根据元组中的第一个元素进行排序:

sorted(my_list, key=lambda x: len(x[0]))
x[0]
更改为
x[1]
以使用第二个元组元素的长度对列表进行排序,依此类推

my_list = [("ww","hello"),("www","world"),("w","sardines")]
listOrder = []
newList = []
for i in my_list:
    listOrder.append(int(len(i[0])))
listOrder.sort()
for i in listOrder:
    for j in my_list:
        if i == len(j[0]):
            newList.append(j)

print(newList)

这也会有帮助。

您还可以使用
排序(我的列表)
返回排序列表,而不修改原始列表。您好!是的,我尝试了,但它没有返回任何结果:/@Jan阅读了
.sort()
方法和
sorted()
函数的文档。前者不返回任何内容,它修改列表本身。@darcamo!!成功了!非常感谢。我不知道这是可能的!我是说哇!但是我可以问一下,因为我一直在阅读关于使用.sort()函数和sorted()函数的利弊,因为有时它可能不会给出我们期望的输出。你认为它能根据句子的长度正确排序吗?@Jan小心点:你的例子不是很好,因为字母顺序和长度顺序是一样的。有关长度的比较,请参见下面dimay的答案。
sorted()
已经返回了一个列表,因此没有必要使用
list()
。是的。。我感谢你的回答和帮助!这实际上是我的问题的答案,我喜欢使用lamba,因为它使代码保持简短。。。不过@dimay先回答了,所以我想我还是要检查一下答案谢谢!我会投赞成票是的,没问题!事实上,他看到了我的答案,然后相应地更新了他的答案,但只要知识传播,我不介意。干杯:)for循环的时间复杂度最高。编程就是尽可能找到一个有效的解决方案。您的程序只需对简单的元组列表进行排序就会占用大量内存是的,我同意您的看法@RaghavGupta,我正在尝试创建一个替代方案。感谢您的回答和帮助!我仍然会考虑这取决于我的未来目标!谢谢你的回答和帮助!我会去排序(我的列表,key=lambda x:len(x[0]))谢谢!这两种方法都是一样的:D lambda的优点是它能保持简短,而且只执行一项任务。再次感谢你!