Python中如何将字典嵌套列表的值按列分栏打印?
问题描述
我拥有一个包含字典嵌套列表的数据结构:
data = {'team A': {'id': ['1', '2'], 'name': ['AAA', 'BBB']}, 'team B': {'id': ['3', '4'], 'name': ['XXX', 'YYY']}}
我希望遍历该字典并按如下格式打印值:
|team A| 1 | AAA | |team A| 2 | BBB | |team B| 3 | XXX | |team B| 4 | YYY |
尝试遍历主字典,但难以实现带分隔符'|'的分栏打印效果,请问该如何用Python实现?
解决方案
可以通过两层遍历配合字符串格式化来实现需求,具体代码如下:
基础实现代码
data = {'team A': {'id': ['1', '2'], 'name': ['AAA', 'BBB']}, 'team B': {'id': ['3', '4'], 'name': ['XXX', 'YYY']}} # 遍历外层字典的团队名与成员数据 for team_name, member_info in data.items(): # 取出当前团队的id和name列表 id_list = member_info['id'] name_list = member_info['name'] # 按索引配对id和name,输出目标格式 for idx in range(len(id_list)): print(f"|{team_name}| {id_list[idx]} | {name_list[idx]} |")
带长度校验的增强版
如果需要避免因id和name列表长度不一致导致的错误,可以添加简单校验:
data = {'team A': {'id': ['1', '2'], 'name': ['AAA', 'BBB']}, 'team B': {'id': ['3', '4'], 'name': ['XXX', 'YYY']}} for team_name, member_info in data.items(): id_list = member_info['id'] name_list = member_info['name'] # 校验两个列表长度是否匹配 if len(id_list) != len(name_list): print(f"提示:团队{team_name}的id与name列表长度不匹配,跳过该团队") continue # 正常输出格式内容 for idx in range(len(id_list)): print(f"|{team_name}| {id_list[idx]} | {name_list[idx]} |")
代码说明
- 外层循环通过
data.items()获取每个团队的名称和对应的成员信息字典; - 从成员信息字典中提取
id和name列表,假设二者是一一对应的关系; - 内层循环通过索引遍历,将团队名、对应位置的id和name用f-string格式拼接成要求的分栏样式。
内容的提问来源于stack exchange,提问作者Sashaank
相关产品推荐
相关产品推荐

