我想打印键和值,值从大到小排序:
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]))