gpt4 book ai didi

python - 在字符串列表上使用排序和关键参数

转载 作者:行者123 更新时间:2023-12-01 05:19:05 25 4
gpt4 key购买 nike

好吧,我提前道歉 - 我是 python 新手,我确信也有类似的问题,但坦率地说,迄今为止学习 python 最难的部分一直是我的头脑围绕着 lambda 排序的语法和用法。

我有一个字符串列表,每个字符串都以换行符和数字开头。喜欢:

27 Tacos Cheese Mango Habanero Salsa
42 Burritos Cheese Beans Beef
7 Chocolates Cherry Strawberry Vanilla

我想根据字符串开头的数字对此列表进行排序。根据我对 lambda 的(非常有限)理解以及此处找到的文档中的示例:https://wiki.python.org/moin/HowTo/Sorting ,我觉得这应该可行:

sort = sorted(string.split('\n'), key=string.split()[0])
for i in sort: print i

所以我的问题是双重的:

我做错了什么?

我可以轻松地按第 5 个单词对这个字符串列表进行排序吗?即 string.split()[4]?

最佳答案

你很接近。 key 必须指定一个带有一个参数的函数。但是,您正在尝试使用列表元素作为参数。试试这个:

>>> string = '''27 Tacos Cheese Mango Habanero Salsa
349 Tacos Cheese Mango Habanero Salsa
1 Tacos Cheese Mango Habanero Salsa'''
>>> sorted(string.split('\n'), key=lambda x: int(x.split()[0])) # the function is the lambda expression
['1 Tacos Cheese Mango Habanero Salsa', '27 Tacos Cheese Mango Habanero Salsa', '349 Tacos Cheese Mango Habanero Salsa']

lambda 表达式是一个匿名函数,与以下函数相同:

def name(x):
return int(x.split()[0])

但在将函数用作 sorted 函数的键之前,您不必声明该函数。

是的,您也可以对列表的第五项执行相同的操作,只要有第五项即可:

>>> sorted(string.split('\n'), key=lambda x: x.split()[5])
['27 Tacos Cheese Mango Habanero Salsa', '349 Tacos Cheese Mango Habanero Salsa', '1 Tacos Cheese Mango Habanero Salsa']

关于python - 在字符串列表上使用排序和关键参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com