我是一个非常基础的编码员,试图弄清楚如何根据它们配对的数字将这个字符串排序到列表中。到目前为止,我已经能够分割字符串“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/