我写了一个脚本来读取文件中的数据并将它们存储在3个词典中。
例如,
d1 = {'Ben': {'Skill': 'true', 'Magic': 'false'}, 'Tom': {'Skill': 'true', 'Magic': 'true'}}
d2 = {'Ben': {'Strength': 'wo_mana', 'Int': 'wi_mana', 'Speed': 'wo_mana'}, 'Tom': {'Int': 'wi_mana', 'Agility': 'wo_mana'}}
d3 = {'Ben': {'Strength': '1.10', 'Int': '1.20', 'Speed': '1.50'}, 'Tom': {'Int': '1.40', 'Agility': '1.60'}}
然后,我希望以表格格式将数据写入.csv或.txt文件,这样当我用Excel打开输出文件时,它有5列和4行,如下所示:
Name Skill Magic wo_mana wi_mana
Ben true false Strength = 1.10 Int = 1.20
Speed = 1.50
Tom true true Agility = 1.60 Int = 1.40
Ben或Tom数据是否排在第一位并不重要。
鉴于我知道我希望我的标题看起来如何,这是我到目前为止所尝试的:
import csv, itertools
header = ['Name', 'Skill', 'Magic', 'wo_mana', 'wi_mana']
with open('output.csv', 'w') as f:
w = csv.DictWriter(f, header)
w.writeheader()
for key, val in sorted(d1.items()):
row = {'Name': key}
row.update(val)
w.writerow(row)
我的输出是:
Name,Skill,Magic,wo_mana,wi_mana
Ben,true,false,,
Tom,true,true,,
对于前3列是正确的。
现在,我不知道如何编写wo_mana
和wi_mana
列的数据,因为:
a)Speed = 1.50
或Strength = 1.10
必须位于第三行,因为它们属于Ben
,因此wo_mana
列下会有两行Ben
1}},我应该合并d2
和d3
这样
d23 = {'Ben': {'wo_mana': 'Strength = 1.10', 'wo_mana': 'Speed = 1.50', 'wi_mana': 'Int = 1.20'}, 'Tom': {'wo_mana': 'Agility = 1.60', 'wi_mana': 'Int = 1.40'}}
b)我不知道如何逐行打印所有数据(首先打印Ben的所有数据,然后打印Tom,反之亦然),因为wo_mana
和wi_mana
数据是与Skill
和Magic
在将这些词典直接写入输出文件之前,我是否应首先对3个词典进行一些更改?我该怎么做才能达到我想要的输出?任何帮助将不胜感激。
答案 0 :(得分:0)
Strength = 1.10; Speed = 1.50
首先将结果存储在列表中,然后使用;
(或,
以外的任何其他字符)加入列表