2016-07-17 82 views
0

我很新的編碼,並就以下指導...清單詞典 - 多個值鍵入

我有一個CSV輸出目前是這樣的:

'Age, First Name, Last Name, Mark' 
'21, John, Smith, 68' 
'16, Alex, Jones, 52' 
'42, Michael, Carpenter, 92 ' 

如何創建一個字典,最終會看起來像這樣:

dictionary = {('age' : 'First Name', 'Mark'), ('21' : 'John', '68'), etc} 

我想第一個值是關鍵 - 只有想其他兩個值,和我有困難要想辦法接近這一點。

到目前爲止,我已經得到了

data = open('test.csv', 'r').read().split('\n') 

我一直在努力,每部分分成串

for row in data: 
    x = row.split(',') 

編輯:

感謝您對那些誰給了一些輸入解決我的問題。

因此,使用

myDic = {} 
for row in data: 
    tmpLst = row.split(",") 
    key = tmpLst[0] 
    value = (tmpLst[1], tmpLst[-1]) 
    myDic[key] = value 

我的數據出來後作爲

['Age', 'First Name', 'Last Name', 'Mark'] 
['21', 'John', 'Smith', '68'] 
['16', 'Alex', 'Jones', '52'] 
['42', 'Michael', 'Carpenter', '92'] 

但得到一個IndexError:在線路列表索引超出範圍

value = (tmpLst[1], tmpLst[-1]) 

即使我可以看到它應該在索引的範圍內。

有誰知道爲什麼會出現這個錯誤或需要更改什麼?

+1

是實際什麼文件看起來像?這不是CSV ...有單引號和方括號,我不希望在CSV文件中。 – smarx

回答

1

假設實際有效的CSV文件看起來像這樣:

Age,First Name,Last Name,Mark 
21,John,Smith,68 
16,Alex,Jones,52 
42,Michael,Carpenter,92 

下面的代碼應該做你想要什麼:

from __future__ import print_function 
import csv 

with open('test.csv') as csv_file: 
    reader = csv.reader(csv_file) 

    d = { row[0]: (row[1], row[3]) for row in reader } 

print(d) 

# Output: 
# {'Age': ('First Name', 'Mark'), '16': ('Alex', '52'), '21': ('John', '68'), '42': ('Michael', '92')} 

如果d = { row[0]: (row[1], row[3]) for row in reader }是混亂的,考慮這個選擇:

d = {} 
for row in reader: 
    d[row[0]] = (row[1], row[3]) 
1

我想你想要這樣的輸出:

詞典= {「年齡」:(「名」,「馬克」)} 然後你可以用下面的代碼:

myDic = {} 
for row in data: 
    tmpLst = row.split(",") 
    key = tmpLst[0] 
    value = (tmpLst[1], tmpLst[-1]) 
    myDic[key] = value