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

Python如何实现字典键值对按两列等宽格式成对打印输出

Python字典两列等宽对齐打印方案

问题对应解决逻辑

  • 每次迭代打印两组键值对:不需要在遍历过程中动态获取下一个迭代元素,直接将字典键值对转为列表后按步长2遍历即可,逻辑简单且容易处理键值对总数为奇数的边界场景。
  • 列对齐实现:利用Python f-string的左对齐格式化语法,自动补空格填充到指定宽度;宽度支持手动固定为40字符,也可以提前遍历所有键值对计算最长字符串长度,自动适配列宽。

可直接运行的代码

自动适配最长键值对宽度版本

example = {
    'key0': 'val0',
    'key1': 'val1',
    'key2': 'val2',
    'key3': 'val3',
    'key4': 'val4',
    'key5': 'val5'
}

# 预处理所有键值对为"键: 值"格式的字符串
item_strs = [f"{key}: {val}" for key, val in example.items()]
# 计算列宽:最长字符串长度+2个字符作为列间距
col_width = max(len(s) for s in item_strs) + 2

# 按步长2遍历,每次取两个元素打印
for idx in range(0, len(item_strs), 2):
    left_col = item_strs[idx]
    # 处理键值对总数为奇数的情况,避免索引报错
    right_col = item_strs[idx+1] if idx + 1 < len(item_strs) else ""
    # 左列按指定宽度左对齐,拼接右列打印
    print(f"{left_col:<{col_width}}{right_col}")

固定40字符列宽版本

仅需要把上述代码中计算col_width的行替换为固定值即可:

col_width = 40

补充:迭代中动态获取下一个键值对的实现(不推荐)

如果一定要在单次循环内动态获取下一个迭代元素,可借助itertools.tee复制迭代器实现,但该方案需要额外处理奇数长度的边界问题,可读性较差:

from itertools import tee

item_iter = example.items()
cur_iter, next_iter = tee(item_iter)
next(next_iter, None)

# 两两配对遍历,最后一个奇数位元素会被遗漏,需单独补打印逻辑
for (k1, v1), (k2, v2) in zip(cur_iter, next_iter):
    print(f"{k1}: {v1:<40}{k2}: {v2}")

运行测试字典的输出效果和预期完全一致:

key0: val0  key1: val1
key2: val2  key3: val3
key4: val4  key5: val5

内容的提问来源于stack exchange,提问作者a79ce734e1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:01:06