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