为什么我的Python字典按人口排序功能无法正常运行?
问题原因
你当前的排序逻辑本身没有问题,排序结果异常的核心原因是:从CSV文件读取到的population字段默认为字符串类型,sorted函数按字符串字典序排序,而非人口数值大小排序,才会出现看似随机的排序结果。
修复方案
二选一即可:
- 方案1:构建字典时直接将人口转换为整数类型
# Create dictionary of data data = {} for i in range(len(countries)): # 将字符串格式的人口转为整数后存入字典 data[countries[i]] = int(population[i]) # 原有排序逻辑保持不变即可 sorted_data = sorted(data.items(), key=lambda x: x[1], reverse=True)
- 方案2:不修改字典存储逻辑,直接在排序时转换类型
# 排序时动态将人口转为整数作为排序依据 sorted_data = sorted(data.items(), key=lambda x: int(x[1]), reverse=True)
修改完成后即可得到按人口数值从大到小的排序结果,首位为中国、末位为圣座,符合作业要求。
内容的提问来源于stack exchange,提问作者Tukk
相关产品推荐
相关产品推荐

