我正在尝试编写一个函数,它将带有以下格式的字典写入一个csv文件,该文件包含每个测试的列(第一个字典中的键)和不同污染物的行(键中的键)正在测试的子词典。每个单元格将包含子字典的值。
output=table.csv
dictionaryEx={'run2.csv': {' ph': 25, ' escherichia coli': 14, ' enterococci': 1},
'run1.csv': { ' enterococci': 7, ' ph': 160, ' nickel': 3,
' dieldrin': 4, ' barium': 1, ' trichloroethylene': 1, }
def writeFile(dictionary)
with open(output,'w') as outputFile:
polDict={}
for element in dictionary:
print element
for pollutant,value in element.values():
polDict[pollutant]={element:value}
for element in polDict:
outputFile.write(pollutant+','+ polDict.values())
outputFile.close()
现在,我试图通过制作一个新词典来实现这一目标,但我正在努力解决从中写作的问题。是否可以使用其他数据结构? csv应该如何看待
&#34;&#34; ,run2.csv,run1.csv \ n ph,25,160 \ n escherichia coli,14,&#34;&#34; \ n肠球菌,1,7 \ n镍,&#34;&#34;,3 < / p>
答案 0 :(得分:0)
此版本适用于Python 3.5.1:
output="table.csv"
dictionaryEx={\
'run2.csv': {' ph': 25, ' escherichia coli': 14, ' enterococci': 1},\
'run1.csv': {' enterococci': 7, ' ph': 160, ' nickel': 3, ' dieldrin': 4, ' barium': 1, ' trichloroethylene': 1}}
def writeFile(dictionary):
with open(output,'w') as outputFile:
# Write the title line.
outputFile.write(",")
for key in dictionary.keys():
outputFile.write(key + ",")
outputFile.write("\n")
# Generate a sorted unique list of pollutants.
pollutants = []
for d in dictionary.values():
for k in d.keys():
pollutants.append(k)
# This sorts the list and removes duplicates.
pollutants = sorted(set(pollutants))
# For each possible pollutant, output the pollutant's
# value for each CSV.
for p in pollutants:
outputFile.write(p + ",")
for csv in dictionary.keys():
if p in dictionary[csv]:
outputFile.write(str(dictionary[csv][p]))
outputFile.write(",")
outputFile.write("\n")
writeFile(dictionaryEx)
这是输出,当我在Excel中打开它时显示格式正确:
,run2.csv,run1.csv,
barium,,1,
dieldrin,,4,
enterococci,1,7,
escherichia coli,14,,
nickel,,3,
ph,25,160,
trichloroethylene,,1,
答案 1 :(得分:0)
类似,但更短
cols = dictionaryEx.keys()
rows = set()
for v in dictionaryEx.values():
rows.update(v.keys()
with open('outputfile','w') as file:
file.write(',' + ','.join(cols) + '\n')
for r in sorted(rows):
file.write(r + ",")
file.write(",".join([str(d,get(r,"")) for d in dictionaryEx.values()]))
file.write("\n")
应该在输出文件
中获取此信息,run2.csv,run1.csv
barium,,1
dieldrin,,4
enterococci,1,7
escherichia coli,14,
nickel,,3
ph,25,160
trichloroethylene,,1