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

Python: How can I fully print out the first n keys and values of the dictionary

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

costumer_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

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

您需要删除中断。此代码生成您想要的示例。

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]))

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

无需创建单独的词典。您可以根据值降序对字典的项目进行排序,然后迭代该排序过程的结果。

costumer_dict = {3:30, 1:22, 2:22}

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

这输出:

3,30
1,22
2,22