2024-10-03 23:17:31 发布
网友
我试着把清单按以下方式分类
data = [('18.3G', 'pgaur'), ('29.6G', 'adsoni'), ('5.51G', 'keyur'), ('10.8G', 'adityac')] sorted(data, key= lambda x:x[0])
但它不是对数据进行排序
sorted(data, key= lambda x:float(x[0][:][:-1]))
会给你想要的
这是按元组x[0]的第一个元素排序 [:]复制元组的其余部分,[:-1]直到最后一位(不包括G)
理想情况下,您需要一个返回数值的键函数。假设可以使用k、m和g作为乘法器。此代码不执行错误检查,这通常是留给读者的练习
k
m
g
def sortkey(pair): num = pair[0][:-1] mult = pair[0][-1].lower() num = float(num) mult = {'k': 1000, 'm': 1000000, 'g': 1000000000}[mult] return num*mult
要以对人类有意义的方式对数字进行排序,必须确保它们以数字而不是文本的形式呈现:
example_list = ['5', '10']
要获得您可能想要的结果,您必须执行以下操作:
data = [('18.3G', 'pgaur'), ('29.6G', 'adsoni'), ('5.51G', 'keyur'), ('10.8G', 'adityac')] sorted_list = sorted(data, key=lambda x: float(x[0][:-1])) print(sorted_list) # prints [('5.51G', 'keyur'), ('10.8G', 'adityac'), ('18.3G', 'pgaur'), ('29.6G', 'adsoni')]
注意x[0]上的切片。它接受x[0]中除最后一个('G')之外的所有字符,因为这会扰乱数字的排序。然后,切片的x[0]被转换成带有float()的float并用于排序。最后,结果保存在一个新列表中
x[0]
'G'
float()
会给你想要的
这是按元组x[0]的第一个元素排序 [:]复制元组的其余部分,[:-1]直到最后一位(不包括G)
理想情况下,您需要一个返回数值的键函数。假设可以使用
k
、m
和g
作为乘法器。此代码不执行错误检查,这通常是留给读者的练习要以对人类有意义的方式对数字进行排序,必须确保它们以数字而不是文本的形式呈现:
example_list = ['5', '10']
如果排序将产生`['10','5'] 因为比较的是5和1;一次一个字符李>要获得您可能想要的结果,您必须执行以下操作:
注意
x[0]
上的切片。它接受x[0]
中除最后一个('G'
)之外的所有字符,因为这会扰乱数字的排序。然后,切片的x[0]
被转换成带有float()
的float并用于排序。最后,结果保存在一个新列表中相关问题 更多 >
编程相关推荐