在Python3中一页一行地打印字典键和值

时间:2018-10-31 16:41:24

标签: python-3.x dictionary printing

假设我有一本字典:{'Mark':100.0,'Peter':50.0,'John':25.0}

我想这样打印:

Mark pays 100
Peter pays 50
John pays 25

但是假设这些键和值将被输入到程序中,并且它们的数量可能会发生变化,我该怎么办?

是否有while循环?

问题是我不知道如何以一种方式来打印键和值,因为一旦打印了前一对,就总是会调用下一对。

2 个答案:

答案 0 :(得分:0)

当然,可以使用循环来完成,但是还有其他方法:

d = {'Mark': 100.0, 'Peter': 50.0, 'John': 25.0}
sorted_items = sorted(d.items(), key=lambda e: e[1], reverse=True)
print('\n'.join('{} pays {}'.format(k, int(v)) for k, v in sorted_items))

说明: d.items()将返回d的键和值的集合,然后我按值对这些项目进行排序并保存到sorted_items中,'{} pays {}'.format(k, int(v))将创建类似DictKey pays DictValue的字符串, '\n'.join将所有字​​符串合并为一个\n分隔的字符串。如果您不需要按值对项目进行排序,只需跳过sorted_items = ...步骤,但是请注意,元素的顺序并不一定要相同:

d = {'Mark': 100.0, 'Peter': 50.0, 'John': 25.0}
print('\n'.join('{} pays {}'.format(k, int(v)) for k, v in d.items()))

输出:

  

马克付了100

     

彼得支付50

     

John付了25

答案 1 :(得分:0)

如果要使用for循环,可以使用.items()函数遍历字典的各项:

d = {'Mark': 100.0, 'Peter': 50.0, 'John': 25.0}
for i, j in d.items():
print (i + ' pays ' + str(j))

这将提供所需的输出