Skip to main content
 首页 » 编程设计

python之排序函数未返回列表列表的正确结果

2025年05月04日13zhengyun_ustc

我有一个列表列表,我试图按人口密度对其进行排序。但是,sorted 函数似乎没有正确地对它们进行排序。

cnt_pop_within_range = [['China', '139.54'], ['United States of America', '32.19'], ['Brazil', '22.72'], ['Canada', '3.43'], ['Indonesia', '144.00'], ['Mexico', '65.32'], ['Egypt', '93.38'], ['France', '119.39'], ['Italy', '199.34'], ['South Africa', '44.98'], ['Colombia', '44.60']] 
print(sorted(cnt_pop_within_range, key = itemgetter(1), reverse = True)) 

这是打印在控制台上的内容:

> [['Egypt', '93.38'], ['Mexico', '65.32'], ['South Africa', '44.98'], 
> ['Colombia', '44.60'], ['United States of America', '32.19'], 
> ['Canada', '3.43'], ['Brazil', '22.72'], ['Italy', '199.34'], 
> ['Indonesia', '144.00'], ['China', '139.54'], ['France', '119.39']] 

请您参考如下方法:

更改您的排序函数以将元素也转换为float,否则项目将按字典顺序(作为字符串)而不是数字排序

>>> print(sorted(cnt_pop_within_range, key = lambda i: float(i[1]), reverse = True)) 
[['Italy', '199.34'], ['Indonesia', '144.00'], ['China', '139.54'], ['France', '119.39'], ['Egypt', '93.38'], ['Mexico', '65.32'], ['South Africa', '44.98'], ['Colombia', '44.60'], ['United States of America', '32.19'], ['Brazil', '22.72'], ['Canada', '3.43']]