社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Bryson Noble • 4 年前 • 214 次点击  

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

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
 
214 次点击  
文章 [ 2 ]  |  最新文章 4 年前
SuperKogito
Reply   •   1 楼
SuperKogito    5 年前

你可以用元组 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    5 年前

函数的语法 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))