如何从 CSV 创建一个双重嵌套的字典?
How to create a doubly-nested dict from CSV?
我正在尝试使用 Python 读取财务 CSV,数据如下所示:
Company1;2018;12345;67890;
Company1;2019;34242;12313;
Company2;2018;12412;32423;
Company3;2017;12314;23554;
...
我正在搜索的是一个函数,它在阅读此 CSV 后会给我以下结果:
Dict2 = {
Company1: { 2018: { Costs: 123, employes: 1231}
2019: { Costs: 231, employes: 1321}}
Company2: { 2019: { Costs: 123, employes: 1231}
Company3: { 2019: { Costs: 123, employes: 1231}
}
我正在这样处理 CSV:
file2 = open(pfad_ordner + "\daten\standortdaten\FirmenBilanz.csv", "r")
reader = csv.reader(file2, delimiter =";")
Dict2 = {}
for row in reader:
Dict2[row[0]] = {"Jahr":row[2], "Ort":row[1], "Mitarbeiter_gewerblich": row[3]}
如果我这样做,python 会忽略具有相同公司名称的行。或者更确切地说,它更新了字典,因此每个公司密钥只存储了一行。
集合模块中的 defaultdict class 可以帮助您。
您将创建 Dict2
作为一个字典,用于存储其他字典:
Dict2 = defaultdict(dict)
现在,您可以提供公司名称作为键,并为该键赋予一个值,该值是您当年的“子字典”,其他值作为字典...全部在一个语句中:
Dict2['Foo, inc.']['2018'] = {'Cost': 23, 'Employees': 9}
这里整理一下:
import csv
from collections import defaultdict
file2 = open(pfad_ordner + "\daten\standortdaten\FirmenBilanz.csv", "r")
reader = csv.reader(file2, delimiter =";")
Dict2 = defaultdict(dict)
for row in reader:
name = row[0]
year = row[1]
Dict2[name][year] = { 'other values from row' }
我正在尝试使用 Python 读取财务 CSV,数据如下所示:
Company1;2018;12345;67890;
Company1;2019;34242;12313;
Company2;2018;12412;32423;
Company3;2017;12314;23554;
...
我正在搜索的是一个函数,它在阅读此 CSV 后会给我以下结果:
Dict2 = {
Company1: { 2018: { Costs: 123, employes: 1231}
2019: { Costs: 231, employes: 1321}}
Company2: { 2019: { Costs: 123, employes: 1231}
Company3: { 2019: { Costs: 123, employes: 1231}
}
我正在这样处理 CSV:
file2 = open(pfad_ordner + "\daten\standortdaten\FirmenBilanz.csv", "r")
reader = csv.reader(file2, delimiter =";")
Dict2 = {}
for row in reader:
Dict2[row[0]] = {"Jahr":row[2], "Ort":row[1], "Mitarbeiter_gewerblich": row[3]}
如果我这样做,python 会忽略具有相同公司名称的行。或者更确切地说,它更新了字典,因此每个公司密钥只存储了一行。
集合模块中的 defaultdict class 可以帮助您。
您将创建 Dict2
作为一个字典,用于存储其他字典:
Dict2 = defaultdict(dict)
现在,您可以提供公司名称作为键,并为该键赋予一个值,该值是您当年的“子字典”,其他值作为字典...全部在一个语句中:
Dict2['Foo, inc.']['2018'] = {'Cost': 23, 'Employees': 9}
这里整理一下:
import csv
from collections import defaultdict
file2 = open(pfad_ordner + "\daten\standortdaten\FirmenBilanz.csv", "r")
reader = csv.reader(file2, delimiter =";")
Dict2 = defaultdict(dict)
for row in reader:
name = row[0]
year = row[1]
Dict2[name][year] = { 'other values from row' }