Py学习  »  Python

如何根据Python中每个字符串中的浮点数对列表进行排序?

Bryson Noble • 6 年前 • 342 次点击  

我试图找出如何根据每个字符串的特定部分对列表进行排序。我怎么写钥匙?

myKey(e)
  return e[-5,-2]

print(sorted(["A: (" + str(round(7.24856, 2)) + ")", "B: (" + str(round(5.8333, 2)) + ")"], key = myKey))

我希望输出如下: ['B: (5.83)', 'A: (7.25)']

在我的完整代码中,列表中有两个以上的字符串,因此我不能按字母顺序对它们进行反向排序。

谢谢你

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/57179
文章 [ 2 ]  |  最新文章 6 年前
SuperKogito
Reply   •   1 楼
SuperKogito    7 年前

你可以用元组 sorted()

input_list = ['A:(100.27)', 'B:(2.36)', 'C:(75.96)', 'D:(55.78)']
tuples_list = [(e.split(':(')[0], float(e.split(':(')[1][:-1])) for e in input_list]
sorted_tuples = sorted(tuples_list, key=lambda x: x[1])
result = [x[0] +':('+ str(x[1]) +')' for x in sorted_tuples]

print(input_list)
print(tuples_list)
print(sorted_tuples)
print(result)

输出:

['A:(100.27)', 'B:(2.36)', 'C:(75.96)', 'D:(55.78)']
[('A', 100.27), ('B', 2.36), ('C', 75.96), ('D', 55.78)]
[('B', 2.36), ('D', 55.78), ('C', 75.96), ('A', 100.27)]
['B:(2.36)', 'D:(55.78)', 'C:(75.96)', 'A:(100.27)']
VietHTran
Reply   •   2 楼
VietHTran    7 年前

函数的语法 myKey 是错误的。除此之外,还必须使用正确的索引(从char'('+1到最后一个之前的字符)将字符串中的数字切片,并将它们转换为浮点数字值,以便 sorted

def myKey(e):
  return float(e[e.index('(')+1:-1])
print(sorted(["A: (" + str(round(7.24856, 2)) + ")", "B: (" + str(round(5.8333, 2)) + ")"], key = myKey))