python - 如何将键的值放在excel(Dict)上的正确位置?
问题描述
我正在尝试用我的饭菜制作一个 Excel 表格。我能够建立基础知识,但是当我想要每一种成分和他的克数时,问题就开始了。
import openpyxl as xl
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
data = {
"Meal 1": {
"Eggs": "140g",
"Cheese": "200g",
"Salad": "200g",
"Avocado": "150g"
},
"Meal 2": {
"Snake": "50g",
"Coffee": "250g",
},
"Meal 3": {
"Rice": "300g",
"Meat": "200g",
"Vagtables": "150g",
},
"Meal 4": {
"Fruit": "150g",
},
"Meal 5": {
"Eggs": "140g",
"Cheese": "200g",
"Tuna": "250g",
"Avocado": "150g"
}
}
wb = Workbook()
ws = wb['Sheet']
ws.title = 'Ordinary Meal Day'
headings = ["Eggs","Cheese","Salad","Avocado","Snake","Coffee","Rice","Meat","Vagtables","Fruit","Tuna"]
ws.append(headings)
for Meals in data:
Ingredients = list(data[Meals].values())
ws.append([Meals] + list(Ingredients))
wb.save('Meals.xlsx')
在excel上,成分的克数不在正确的位置。现在,我想到了一个解决方案,我需要创建一个循环和 if 语句来比较成分的名称,但我不确定这是否是最好的主意。
解决方案
如果可以使用 pandas,那就很简单了:
import pandas as pd
df = pd.DataFrame(data)
然后你得到:
餐1 | 膳食 2 | 膳食 3 | 餐 4 | 第五餐 | |
---|---|---|---|---|---|
蛋 | 140克 | 楠 | 楠 | 楠 | 140克 |
奶酪 | 200克 | 楠 | 楠 | 楠 | 200克 |
沙拉 | 200克 | 楠 | 楠 | 楠 | 楠 |
牛油果 | 150克 | 楠 | 楠 | 楠 | 150克 |
蛇 | 楠 | 50克 | 楠 | 楠 | 楠 |
咖啡 | 楠 | 250克 | 楠 | 楠 | 楠 |
米 | 楠 | 楠 | 300克 | 楠 | 楠 |
肉 | 楠 | 楠 | 200克 | 楠 | 楠 |
杂物 | 楠 | 楠 | 150克 | 楠 | 楠 |
水果 | 楠 | 楠 | 楠 | 150克 | 楠 |
金枪鱼 | 楠 | 楠 | 楠 | 楠 | 250克 |
你可以发送到一个excel文件:
df.to_excel('meals.xlsx')
或者,如果您想要一个宽表,您可以转置 df:
df = pd.DataFrame(data).T
蛋 | 奶酪 | 沙拉 | 牛油果 | 蛇 | 咖啡 | 米 | 肉 | 杂物 | 水果 | 金枪鱼 | |
---|---|---|---|---|---|---|---|---|---|---|---|
餐1 | 140克 | 200克 | 200克 | 150克 | 楠 | 楠 | 楠 | 楠 | 楠 | 楠 | 楠 |
膳食 2 | 楠 | 楠 | 楠 | 楠 | 50克 | 250克 | 楠 | 楠 | 楠 | 楠 | 楠 |
膳食 3 | 楠 | 楠 | 楠 | 楠 | 楠 | 楠 | 300克 | 200克 | 150克 | 楠 | 楠 |
餐 4 | 楠 | 楠 | 楠 | 楠 | 楠 | 楠 | 楠 | 楠 | 楠 | 150克 | 楠 |
第五餐 | 140克 | 200克 | 楠 | 150克 | 楠 | 楠 | 楠 | 楠 | 楠 | 楠 | 250克 |
并再次表现出色:
df.to_excel('meals_wide.xlsx')
推荐阅读
- amazon-web-services - 如何从另一个表中查询和映射数据?
- vuejs2 - 使用复选框 Vue.js 切换固定金额
- postman - Bamboo Build 中的邮递员
- type-conversion - jOOQ 的记录映射器转换器丢失时间戳精度
- git - git push 不反映 gitlab 上的最新推送
- jdbc - Kakfa-Connect - 交易/回滚 - 还有其他限制吗?
- python - 使用 Python 3.7(32 位)连接 psqlodbc 失败,使用 python 2.7 32 位
- powershell - 在 powershell 的新行上添加内容
- python - 在“Evolver Sim Control(eSC)”上运行示例模拟时,是否有人遇到过失败?
- wordpress - add_rewrite_rule 用于自定义帖子类型搜索