Python:如何完整打印出字典的前n个键和值?



我想打印键和值,值从大到小排序:

customer_dict = {3:30, 1:22, 2:22}
sorted_values = [30, 22, 22]
sorted_dict = {}
for i in sorted_values:
for k in customer_dict.keys():
if customer_dict[k] == i:
sorted_dict[k] = customer_dict[k]
break
for x in list(sorted_dict)[:3]:
print(str(x) + ',' + str(sorted_dict[x]))

我期望的答案是

3,30
1,22
2,22

但是,它只会输出

3,30
1,22

但是,如果字典中没有重复的值,它将打印出正确的答案,所以我想知道为什么会发生这种情况。谁能告诉我代码哪里错了?

您的for循环在第一个匹配值处停止。它没有找到您的值的所有匹配项。

不需要创建一个单独的字典。您可以根据值按降序对字典中的项进行排序,然后遍历该排序过程的结果。

customer_dict = {3:30, 1:22, 2:22}
for key, value in sorted(customer_dict.items(), key=lambda x: x[1], reverse=True):
print(f"{key},{value}")

这个输出:

3,30
1,22
2,22

您需要删除分隔符。这段代码生成了您想要的示例。

customer_dict = {3:30, 1:22, 2:22}
sorted_values = [30, 22, 22]
sorted_dict = {}
for i in sorted_values:
for k in customer_dict.keys():
if customer_dict[k] == i:
sorted_dict[k] = customer_dict[k]


for x in list(sorted_dict)[:3]:
print(str(x) + ',' + str(sorted_dict[x]))

相关内容

  • 没有找到相关文章

最新更新