为什么我的字典排序功能无法正常工作?



我有一个从csv导入数据集的任务,任务的最后一部分让我卡住了,特别是:

国家按人口最多(中国)到最少(罗马教廷)顺序排列

问题在于结果列表本身是按字母顺序(按国家)排列的,或者看起来是随机的。

# Create dictionary of data
data = {}
for i in range(len(countries)):
data[countries[i]] = population[i]
# Sort the dictionary by population size
sorted_data = sorted(data.items(), key=lambda x: x[1], reverse=True)
# Save and print the formated data
for i in range(len(sorted_data)):
outfile.write("{} ".format(i+1) + f'{sorted_data[i][0]:{50}} {sorted_data[i][1]:{50}}' + "n")
print("{} ".format(i+1) + f'{sorted_data[i][0]:{50}} {sorted_data[i][1]:{50}}' + "n")

我已经尝试将key=lambda x: x[1]更改为key=lambda x: x[0],但这是按国家而不是人口计数排序的列表。

编辑:

赋值的csv来自这里:https://think.cs.vt.edu/corgis/csv/covid/

当前输出看起来像这样,但需要看起来像这样

此外,我不能在这个作业中使用pd。

假设您有一个字典,其中键是国家名称,值是人口,要通过减少人口来打印有序列表,您可以执行以下操作:

cd = {'A':12, 'B': 8, 'C':45, 'D': 4}  # Sample Dictionary
sd = sorted(cd, key= lambda x: cd[x], reverse=True) # Sorted List of Keys
for k in sd:
print(f'Country: {k} has population {cd[k]}')

这会产生以下输出:

Country: C has population 45
Country: A has population 12
Country: B has population 8
Country: D has population 4

这里的解决方案非常简单。填充数据需要从str类型改为int类型。

# Create dictionary of data
data = {}
for i in range(len(countries)):
data[countries[i]] = int(population[i])

这允许对总体进行正确排序。

相关内容

  • 没有找到相关文章

最新更新