python - 如何按数字从高到低排序

标签 python list

我是一个非常基础的编码员,试图弄清楚如何根据它们配对的数字将这个字符串排序到列表中。到目前为止,我已经能够分割字符串“apples”,但我似乎无法让排序函数返回数字而不是第二个字符。我将如何隔离数字以便对它们进行排序?重要的是我使用调用“apple_sort”函数的 lambda 函数。

apples = "McIntosh:3,Red Delicious:5,Fuji:8,Gala:6,Ambrosia:7,Honeycrisp:7.5,Granny Smith:1"

def apple_sort(apple):
  return apple[1]

def sort_csv(x):
  x = (x.split(","))
  return sorted(x, key=apple_sort)
print(sort_csv(apples))

我的答案应该打印出来,

['Fuji:8', 'Honeycrisp:7.5', 'Ambrosia:7', 'Gala:6', 'Red Delicious:5', 'McIntosh:3', 'Granny Smith:1']

最佳答案

您可以使用sorted使用以下 key 代替(请注意,数字字符串必须转换为浮点型):

sorted(apples.split(','), key=lambda x: -float(x.split(':')[1]))

['Fuji:8',
 'Honeycrisp:7.5',
 'Ambrosia:7',
 'Gala:6',
 'Red Delicious:5',
 'McIntosh:3',
 'Granny Smith:1']

第一个必要的步骤是将上面的字符串分割到一个列表中,该列表将被输入到sorted:

print(apples.split(','))
# ['McIntosh:3', 'Red Delicious:5', 'Fuji:8', 'Gala:6', 'Ambrosia:7', 
#   'Honeycrisp:7.5', 'Granny Smith:1']

然后上面的键,lambda x: -float(x.split(':')[1])将通过':'分割内部字符串,然后对结果列表中的第二个元素进行索引并转换为 float 。通过取负数,排序将降序。

关于python - 如何按数字从高到低排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58172069/

相关文章:

Python - 覆盖类变量的初始化

c# - 嵌套 LINQ 查询 - 列表中的列表

list - 通过分布 [] 来简化代码

r - 如何将向量转换为R中的列表?

c++ - 使用指向 Value 的原始指针从 std::list<Value> 中删除?

python - Python 无法正确识别字符串长度?

python - Dataframe 过滤列(如果它是区间数据类型)

python - 在 R 中使用 system() 调用 python 以运行模拟 python 控制台的 python 脚本

python - 要听写的列表列表

python - 当同一个 POST 在 Postman 中正常工作时,如何解决 Python 请求 POST 失败的问题?