簡體   English   中英

使用python行中的鍵從csv文件創建字典

[英]create dictionary from csv file using a key within row in python

如果鍵是每一行的最后一個索引( index[9] ),我將如何使用csv文件創建字典。 例如:

,,,,,,,,,KEY_1
,,,,,,,,,KEY_1
,,,,,,,,,KEY_1
,,,,,,,,,KEY_2
,,,,,,,,,KEY_2
,,,,,,,,,KEY_2
,,,,,,,,,KEY_3
,,,,,,,,,KEY_3
,,,,,,,,,KEY_3

有沒有一種方法可以創建如下所示的字典:

dictt = {
        'KEY_1':[,,,,,,,,], [,,,,,,,,], [,,,,,,,,],
        'KEY_2':[,,,,,,,,], [,,,,,,,,], [,,,,,,,,],
        'KEY_3':[,,,,,,,,], [,,,,,,,,], [,,,,,,,,],
        }

我只有6mons自學的python,並且正在解決成長中的煩惱。 任何幫助是極大的贊賞。 謝謝高級

在回答“是否可能”問題時,必須說“不完全”,因為沒有 Python構造與您顯示的語法匹配:

dictt = {
    'KEY_1':[,,,,,,,,], [,,,,,,,,], [,,,,,,,,],
    'KEY_2':[,,,,,,,,], [,,,,,,,,], [,,,,,,,,],
    'KEY_3':[,,,,,,,,], [,,,,,,,,], [,,,,,,,,],
    }

輸入此內容將是語法錯誤,因此沒有代碼可以構建等效項。

但是,如果您的意思是

dictt = {
    'KEY_1':[['','',,,,,,,], [,,,,,,,,], [,,,,,,,,]],
    'KEY_2':[[,,,,,,,,], [,,,,,,,,], [,,,,,,,,]],
    'KEY_3':[[,,,,,,,,], [,,,,,,,,], [,,,,,,,,]],
    }

(以此類推(例如,替換每個,,以便在其中包含一些東西 ,例如一個空字符串-不用花很長時間編輯它來修復它!-),)那么肯定可能的。

例如:

import collections
import csv

dictt = collections.defaultdict(list)

with open('some.csv') as f:
    r = csv.reader(f)
    for row in r:
        dictt[r[-1]].append(r[:-1])

完成后, dictt將是collections.defaultdictdict的子類)的實例,但是您可以將其用作dict 或者,如果您絕對堅持認為它是dict而不是它的子類(盡管沒有合理的理由如此堅持),請跟進

dictt = dict(dictt)

和瞧,它被轉換為:-)

其他方式:

txt='''\
,,,,,,,,,KEY_1
,,,,,,,,,KEY_1
,,,,,,,,,KEY_1
,,,,,,,,,KEY_2
,,,,,,,,,KEY_2
,,,,,,,,,KEY_2
,,,,,,,,,KEY_3
,,,,,,,,,KEY_3
,,,,,,,,,KEY_3
'''

import csv

result={}
for line in csv.reader(txt.splitlines()):
    result.setdefault(line[-1], []).append(line[:-1])

>>> result
{'KEY_1': [['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '']], 'KEY_3': [['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '']], 'KEY_2': [['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '']]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM