Python如何优雅打印键为字符串、值为列表的字典?
问题说明
我希望打印一份通讯录,期望输出格式如下:
Name Company Phone Number Name 1 Company 1 Number 1 Name 2 Company 2 Number 2 Name 2 Company 2 Number 2
我的字典数据为:
book = {"Name 1": ["Company 1", "Company 1"], "Name 2": ["Company 2", "Company 2"], "Name 3": ["Company 3", "Company 3"]}
但当前打印时,字典的列表值会直接以列表形式展示,没法拆分显示成列。我考虑过用pprint但不知道怎么操作,想问下能不能用for循环实现这种格式化打印?
解决方案
完全可以用for循环实现,关键是靠字符串格式化固定每列宽度,让内容对齐。直接上代码:
# 先修正字典,把列表第二个元素改为电话号码(匹配示例输出) book = {"Name 1": ["Company 1", "Number 1"], "Name 2": ["Company 2", "Number 2"], "Name 3": ["Company 3", "Number 3"]} # 打印表头,用<做左对齐,数字对应列的宽度,可按需调整 print(f"{'Name':<25}{'Company':<30}{'Phone Number':<20}") # 遍历字典里的每一组姓名和对应信息 for name, details in book.items(): company, phone = details # 按统一格式打印每行内容 print(f"{name:<25}{company:<30}{phone:<20}")
要是你需要让同一个姓名重复出现(比如示例里的Name 2),可以把字典改成列表嵌套的结构,逻辑更直观:
book = [ {"name": "Name 1", "company": "Company 1", "phone": "Number 1"}, {"name": "Name 2", "company": "Company 2", "phone": "Number 2"}, {"name": "Name 2", "company": "Company 2", "phone": "Number 2"}, {"name": "Name 3", "company": "Company 3", "phone": "Number 3"} ] print(f"{'Name':<25}{'Company':<30}{'Phone Number':<20}") for entry in book: print(f"{entry['name']:<25}{entry['company']:<30}{entry['phone']:<20}")
这样打印出来的内容就完全符合你要的格式了。
内容的提问来源于stack exchange,提问作者joazeiro
相关产品推荐
相关产品推荐

