假设我有一本字典:{'Mark':100.0,'Peter':50.0,'John':25.0}
我想这样打印:
Mark pays 100
Peter pays 50
John pays 25
但是假设这些键和值将被输入到程序中,并且它们的数量可能会发生变化,我该怎么办?
是否有while循环?
问题是我不知道如何以一种方式来打印键和值,因为一旦打印了前一对,就总是会调用下一对。
答案 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))
这将提供所需的输出