我正在嘗試使用 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 會忽略具有相同公司名稱的行。或者更確切地說,它更新字典,因此每個公司鍵只存盤一行。
uj5u.com熱心網友回復:
collections 模塊中的defaultdict類可以幫助您。
您將創建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' }
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/403457.html
標籤:
