访问动态生成的Python字典中的值

时间:2016-05-01 03:37:43

标签: python dictionary nested

我有一个大的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'])。

我可以在嵌套词典中找到的所有示例都是手动构建的,并不能解决我似乎无法解决的问题。

请指教。非常感谢!

2 个答案:

答案 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'}}

另外值得注意的是,使用列表似乎是合适的,因为它们通常用于数字连续的索引数据