[英]Create Multiple Python dictionaries from CSV using same column as key
我有一個csv:
Col1, Col2, Col3, ...
10, 0.024, 0.0012, ...
20, 0.0013, 0.43, ...
我想要像這樣的詞典列表
[{"Col1":"Col2"}, {"Col1": "Col3"},...]
始終將Col1
作為每個詞典的鍵
我已經嘗試過了,它適用於第一個字典,但是為所有其他字典產生空字典。
import os, csv
path = r"I:\ARC\WIP\KevinWIP\Risk\Data\PythonGui"
os.chdir(path)
with open('DispersalKernal10m.csv', mode = 'r') as infile:
reader = csv.reader(infile)
DistProb_LUT = [
{rows[0]:rows[1] for rows in reader},
{rows[0]:rows[2] for rows in reader},
{rows[0]:rows[3] for rows in reader},
{rows[0]:rows[4] for rows in reader},
{rows[0]:rows[5] for rows in reader},
{rows[0]:rows[6] for rows in reader},
{rows[0]:rows[7] for rows in reader}]
infile.close()
print(DistProb_LUT)
到處搜索,我嘗試的所有內容均無效。 任何建議表示贊賞。
為了創建第一個字典本身,您要遍歷整個文件並到達文件的末尾,因此對於所有其他字典,文件光標始終位於末尾,因此所有其他字典均為空。 與其像那樣進行字典理解,不如在字典創建部分之外使用for循環並稍微修改一下邏輯,如下所示:
import os, csv
path = r'I:\ARC\WIP\KevinWIP\Risk\Data\PythonGui'
os.chdir(path)
DistProb_LUT = [{} for _ in range(7)]
with open('DispersalKernal10m.csv', mode = 'r') as infile:
reader = csv.reader(infile)
for rows in reader:
for i in range(7):
DistProb_LUT[i][rows[0]] = rows[i+1]
您也不需要關閉infile,因為它將由with
語句自動關閉。
讀取文件通常不是一項操作,您可以連續多次重復此操作而無需重新打開文件。 因此,這樣的事情可能對您有用:
import os, csv
path = r'I:\ARC\WIP\KevinWIP\Risk\Data\PythonGui'
os.chdir(path)
DistProb_LUT = [{} for i in range(7)]
with open('DispersalKernal10m.csv', mode = 'r') as infile:
reader = csv.reader(infile)
for row in reader:
DistProb_LUT[0][row[0]] = row[1]
DistProb_LUT[1][row[0]] = row[2]
DistProb_LUT[2][row[0]] = row[3]
DistProb_LUT[3][row[0]] = row[4]
DistProb_LUT[4][row[0]] = row[5]
DistProb_LUT[5][row[0]] = row[6]
DistProb_LUT[6][row[0]] = row[7]
print(DistProb_LUT)
另外,您不需要infile.close()
行。 with
語句可以幫助您解決該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.