list - Python 3 使用列表值遍历字典以显示为表
问题描述
我有一个字典,列表存储为值:
my_dict = {"version":[1, 2, 3],"size":[10, 20, 30],"cost":["£200","£350","£400"],"limit":[44, 53, 62, 71],}
我想做的是遍历所有这些以显示一个表格:
version size cost limit
1 10 £200 44
2 20 £350 53
3 30 £400 62
我知道我可以使用 zip 功能,例如:
for row in zip(*([key] + (value) for key, value in sorted(my_dict.items()))):
print(*row)
但我想学习如何在不使用 zip 的情况下迭代这类事情。我已经测试了一些嵌套的 for 循环,但我无法获得我想要的输出!
解决方案
您可以使用此示例来迭代my_dict
,但使用zip()
更 Pythonic(也更方便):
my_dict = {"version":[1, 2, 3],"size":[10, 20, 30],"cost":["£200","£350","£400"],"limit":[44, 53, 62, 71],}
print(''.join('{:^15}'.format(k) for k in my_dict))
cnt = 0
while True:
try:
for k in my_dict:
print('{:^15}'.format(my_dict[k][cnt]), end='')
print()
cnt += 1
except IndexError:
break
印刷:
version size cost limit
1 10 £200 44
2 20 £350 53
3 30 £400 62
编辑:要指定列的顺序,您可以使用operator.itemgetter
:
my_dict = {"version":[1, 2, 3],"size":[10, 20, 30],"cost":["£200","£350","£400"],"limit":[44, 53, 62, 71],}
from operator import itemgetter
columns = ['version', 'cost', 'limit', 'size']
print(''.join('{:^15}'.format(k) for k in columns))
i = itemgetter(*columns)
for vals in zip(*i(my_dict)):
print(''.join('{:^15}'.format(v) for v in vals))
印刷:
version cost limit size
1 £200 44 10
2 £350 53 20
3 £400 62 30
推荐阅读
- apiconnect - API Connect 中 API 的 Swagger 文档链接
- python - 使用 keras 分词器预处理 keras 数据集
- javascript - JavaScript Regex 去除没有属性的 html 标签
- admob - 在提交给 Apple 认证团队进行审核之前,我是否应该更改 Admob 测试 ID?SwiftUI
- api - 将 Dialogflow 与 Api 连接
- java - Java中的Codility MaxPathFromTheLeftTopCorner练习
- optimization - 具有 OR 逻辑的 LP / MILP 公式
- azure - 使用静态 IP 部署 Azure kubernetes 入口时出错
- android - 如何在Android中调用CustomView的onDraw(Canvas canvas)函数?
- excel - 将多个电子邮件地址从单行存储到列表/集合