【问题标题】:Accesing values inside of dynamically generated Python dictionary访问动态生成的 Python 字典中的值
【发布时间】:2016-05-01 03:37:42
【问题描述】:

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

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

请指教。非常感谢!

【问题讨论】:

  • 这与 XML 有什么关系?我认为您的意思是“CSV”。

标签: python dictionary nested


【解决方案1】:
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]    

【讨论】:

    【解决方案2】:

    作为记录,您不需要重新创建字典,行已经是字典:

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-23
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2021-10-31
      • 2019-01-31
      • 2013-06-28
      相关资源
      最近更新 更多