以易于编辑和读取的方式导入和导出嵌套字典到Excel

我试图导出一个字典,格式为:

d = {'Apple':{'Weight':12,'Colour':'red'}, 'Banana':{'Weight':11,'Colour':'yellow','Bunched':1} } 

转换成以下格式的excel文件:

 NAME Weight Colour Bunched Apple 12 red Banana 11 yellow 1 

d中不是每个键都有相同数量的键本身。

我设法得到了导入代码,但是我在导出代码时遇到了问题。 我到目前为止:

  import csv data = Fruits with open('fruits.csv', 'r') as f: reader = csv.reader(f) for row in reader: a = iter(row[1:]) data[row[0]] = dict(zip(a, a)) data = Vegetables with open('veg.csv', 'r') as f: reader = csv.reader(f) for row in reader: a = iter(row[1:]) data[row[0]] = dict(zip(a, a)) 

但它不起作用。 任何帮助?

你可以使用pandasfrom_dict()很容易地做到这一点:

 import pandas as pd d = {'Apple':{'Weight':12,'Colour':'red'}, 'Banana':{'Weight':11,'Colour':'yellow','Bunched':1} } df = pd.DataFrame.from_dict(d, orient='index') # convert dict to dataframe df.to_csv('fruits.csv') # write dataframe to file 

你可以像这样使用csv.DictWritercsv.DictReader

 import csv d = {'Apple':{'Weight': 12, 'Colour': 'red'}, 'Banana':{'Weight': 11, 'Colour': 'yellow', 'Bunched': 1}} fieldnames = ["name", "Weight", "Colour", "Bunched"] with open("fruits.csv", "w") as f: writer = csv.DictWriter(f, fieldnames=fieldnames) for fruit, fruit_info in d.items(): row = fruit_info row.update({"name": fruit}) writer.writerow(row) with open('fruits.csv', 'r') as f: reader = csv.DictReader(f, fieldnames=fieldnames) ret_d = {} for row in reader: fruit = {} for key, value in row.items(): if not key == "name" and value: fruit[key] = value ret_d[row["name"]] = fruit print(ret_d) 

有了这个解决scheme,你需要扁平化字典,因为csv.DictWriter用下面的模式的字典写每一行:

 {column1: data, column2: data, column3: data, ...} 

你必须给字段名,因为字典是无序的。

有关更多信息,请参阅文档 。