如何按数字排序,从高到低

2024-04-29 08:13:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个非常基本的编码器试图找出如何排序这个字符串到一个列表中,根据他们配对的数字。到目前为止,我已经能够分割字符串'apples',但我似乎不能让排序函数返回数字,而不是第二个字符。我该如何分离这些数字以便对它们进行排序?我使用lambda函数调用'apple\u sort'函数是很重要的。你知道吗

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']

Tags: 函数字符串apple排序数字redsortdelicious
1条回答
网友
1楼 · 发布于 2024-04-29 08:13:51

您可以将^{}与以下key一起使用(请注意,必须将数字字符串转换为float):

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']

第一个必要的步骤是split将上面的字符串放入一个列表,该列表将被馈送到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。如果取负数,顺序将是降序的。你知道吗

相关问题 更多 >