2013-11-25 72 views
0

我真的在這裏遇到了一個問題,我是python的新手,並將其用於典型需求。我想在一個循環中的鍵值對添加到字典如:在Python字典中添加新的鍵值對

Eg_dict={} 
for row in iterable: 
    dict={row[1],row[2]} 

我想達到什麼該代碼沒有做,這只是增加了可迭代的最後記錄到字典,它的很容易假設我的代碼正在從迭代中讀取每條記錄,並一遍又一遍地重寫字典。

所以我的問題很簡單,如何從字典中的迭代中添加所有記錄?這將是unix中數組的默認行爲。

P.S:這裏的迭代可以假定爲一個csv.reader對象,我試圖將第二和第三列插入到字典中。

回答

8

使用字典賦值:

for row in iterable: 
    Eg_dict[row[1]] = row[2] 

或曾經更換的字典理解整個代碼:

Eg_dict = {row[1]: row[2] for row in iterable} # python 2.7 and up 

Eg_dict = dict(row[1:3] for row in iterable) # python 2.3 and up 

如果每個row有條目的固定數量,你可以使用元組賦值:

for key, value in row: # two elements 

for _, key, value in row: # three elements, ignore the first 

使環路更具有可讀性。例如。 {key: value for _, key, value in iterable}

您的代碼改爲創建一個新的集合對象(只有唯一的值,沒有鍵)每個循環,取代前一個循環。

2

您可以使用一個很好的列表理解爲這樣的:

d = dict([(row[1], row[2]) for row in iterable]) 

這將在任何的Python版本。

如果使用2.7+或3,則可以使用清潔字典理解:

d = {row[1]:row[2] for row in iterable} 
相關問題