You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:21:32