我有一个大的XML文件,一直在折磨我。我已经设法解决其设计中的许多缺陷,并希望将其转移到python字典以便以后写入SQL等。同时,我可以使用字典来完成我的任务。
问题在于我的代码:
import os, csv
from collections import Counter
from pprint import pprint
dd = {}
x=0
with open('transactions.csv', 'r') as f:
reader = csv.DictReader(f)
h = (reader.fieldnames)
for row in reader:
x+=1
for i in h:
dd[x] = {'date':row['Date'],
'amount':row[' Amount'],
'type':row[' Type'],
'note':row[' Description']
}
我的想法是我正在阅读文件(在这种情况下是练习文件)并将其输入字典。如上所述,有一个键有一个条目。我可以枚举它并将其用作索引,或者我可以手动计算它。我也可以使用dd [x]的唯一字段。但无论我做什么,我都无法单独访问字典中的值。
例如,执行以下操作会很棒:
print (dd[25]['date'])
我每次都感冒了。我想我可以访问第25条(dd [25])并获取日期(dd [25] [' date'])。
我可以在嵌套词典中找到的所有示例都是手动构建的,并不能解决我似乎无法解决的问题。
请指教。非常感谢!
答案 0 :(得分:0)
for row in reader:
x+=1
for i in h:
dd[x] = {'date':row['Date'],
'amount':row[' Amount'],
'type':row[' Type'],
'note':row[' Description']
......
}
for key in dd[x].keys(): ## iterate through keys
print d[x][key]
答案 1 :(得分:0)
对于记录,您不需要重新创建字典,行已经是必须的:
import csv
dd = {}
with open('mycsv.csv', 'r') as f:
reader = csv.DictReader(f)
h = next(reader)
for x, row in enumerate(reader, 1):
dd[x] = row
print(dd)
<强>输出强>
{1: {'Date': '4/30/16', 'Amount': '11.23', 'Type': '1', 'Description': 'Something 1'}, 2: {'Date': '4/30/16', 'Amount': '10.23', 'Type': '2', 'Description': 'Something 2'}, 3: {'Date': '4/30/16', 'Amount': '9.23', 'Type': '3', 'Description': 'Something 3'}, 4: {'Date': '4/30/16', 'Amount': '8.23', 'Type': '4', 'Description': 'Something 4'}}
另外值得注意的是,使用列表似乎是合适的,因为它们通常用于数字连续的索引数据