新手问题:我试图编写一个函数来将嵌套字典写入csv文件,所以我从Stack Overflow(Convert Nested Dictionary to CSV Table)中提取了一些代码,但我不断收到错误消息"字典"不可赎回。由于我并不真正理解代码的哪一部分正在做什么,因此难以排除故障。 有人可以解释并帮我修改我的代码吗?
这是我的代码:
def dict_to_csv(dict, txtFileName, destination_file):
with open(destination_file, 'wb') as f:
writer = csv.DictWriter(f, dict.keys())
writer.writeheader()
for key, row in dict.iteritems():
writer.writerow(dict(row, **{'': key})) #this is the row where I'm getting the error message
f.closed()
提前感谢您的帮助!
以下是我使用的字典示例: {' 20140524X21540':{'':'','业余建造':'是',&# 39;制作':' KENNETH A BERGER','位置':'''电气城,西澳大利亚''总计未受伤的':'','纬度':'', '事件ID' 20140524X21540','机场名称':' N / A','飞机类别': '未知','调查类型':'事故','报告状态':'初步',' ;活动日期':' 05/24/2014','总致命伤害':' 1','国家':& #39;美国','天气状况'' VMC','注册号码':' N249PW',' ;事故编号':' WPR14FA209','发动机数量''','经度':'& #39;,' Air Carrier''',' Total Serious Injuries':'',' Airport Code&# 39;:'','型号':' SEAREY LSX','广泛的飞行阶段':'''' ;,'出版日期':' 05/29/2014',' FAR说明':'第91部分:通用航空',&# 39 ;引擎类型':'','安排':'','飞行目的':'个人& #39;,'飞机损坏'实质性','伤害严重性':'致命(1)','轻微伤害':'},' 20140529X73728':{'':'','业余内置'''制作':' ROBINSON HELICOPTER COMPANY','位置':''''' ; Chugiak,AK"',' Total Uninjured':'',' Latitude':' 61.417778', '事件ID' 20140529X73728','机场名称':'','飞机类别':&# 39;直升机','调查类型''事故','报告状态':'初步'事件'事件日期':' 05/28/2014','总致命伤害':' 1','国家':&#39 ;美国','天气状况' VMC','注册号码':' N392GP','意外数字':' ANC14FA030','发动机数量':' 1','经度':' -149.500833& #39;,' Air Carrier''',' Total Serious Injuries':'',' Airport Code&# 39;:'','模型':' R44 II','广泛的飞行阶段':'''' ;,'出版日期':' 05/30/2014',' FAR说明':'第133部分:Rotorcraft Ext。加载','引擎类型':'往复','安排':'','飞行的目的&# 39;:'外部负荷'飞机损坏''被摧毁','伤害严重程度':'致命(1) ','轻微伤害':'},' 20140320X40839':{'':'& #39;,'业余建造'否','制作':' CESSNA','位置': '"弗吉尼亚州夏洛茨维尔"',' Total Uninjured':' 1',' Latitude':' 38.139722', '事件ID':#201; 20140320X40839','机场名称':' CHARLOTTESVILLE-ALBEMARLE','飞机类别': '飞机','调查类型''事故','报告状态':'可能的原因',&# 39;活动日期':' 03/08 / 2014','总致命伤害':'','国家': '美国','天气状况' VMC','注册号码':' N5423J',&# 39;事故编号':' ERA14CA160','发动机数量' 1''经度':' -78.452222',' Air Carrier''',' Total Serious Injuries':'','机场代码':' CHO''型号':' 172N','广泛的飞行阶段'登陆和'登陆& #39;,'发布日期':' 05/05 / 2014',' FAR Descrip ':'第91部分:通用航空','引擎类型':'往复','计划':' ','飞行目的'个人','飞机损坏''实质性'伤害严重程度& #39;:'非致命','总轻伤?''}}
答案 0 :(得分:1)
首先,不要使用像dict
这样的对象名作为变量。由于您正在尝试call
变量dict
,因此出现此错误。
在您提到的代码中,dict(...)
行的目的是将defaultdict
转换为常规dict
,以防止无意中创建新密钥。 dict(...)
的使用类似于这样的代码段:
a = [1,2,3,4,5] # list
b = set(a) # conversion to set
修复很简单:更改变量名称!
def dict_to_csv(my_dict, txtFileName, destination_file):
with open(destination_file, 'wb') as f:
writer = csv.DictWriter(f, my_dict.keys())
writer.writeheader()
for key, row in my_dict.iteritems():
writer.writerow(dict(row, **{'': key})) #this is the row where I'm getting the error message
f.closed()
答案 1 :(得分:1)
import pandas as pd
data = pd.DataFrame(dict)
data.to_csv("./filename.csv")