2014-07-01 79 views
0

我想用list2的元素替換第一個鍵list1的值。但與下面的代碼輸出爲:Python:使用數組替換字典中的值

輸出

list[21, 21, 22, 22] 
[{'a': array([[22, 22, 3]]), 'i': 'stop', 'c': array([7, 8, 9]), 'b': array([4, 5, 6])}, {'a': array([[1, 2, 3]]), 'i': 'stop', 'c': array([7, 8, 9]), 'b': array([4, 5, 6])}] 

我的代碼

list1 = [{'a': array([(1,2,3)]), 'b': array([4,5,6]), 'i': 'stop', 'c': array([7,8,9])}, {'a': array([(1,2,3)]), 'b': array([4,5,6]), 'i': 'stop', 'c': array([7,8,9])}] 


list2 = [ array([21, 22, 23]), array([25, 26, 27])] 

list3=[] 

for item in liste: 
for key,value in item.iteritems():  
    if key == 'a': 
     list3.append(value) 

list4=[] 
for i in range(len(g_a)): 
    for j in range(len(list3)): 

     list3[0][0][j] = g_a[0][i] 
     list4.append(list3[0][0][j]) 

print list4 
print list 

我想要得到這樣的:

liste = [{'a': array([(21,22,23)]), 'b': array([4,5,6]), 'i': 'stop', 'c': array([7,8,9])}, {'a': array([(25,26,27)]), 'b': array([4,5,6]), 'i': 'stop', 'c': array([7,8,9])}] 

哪裏錯誤?非常感謝您提前!

+0

哪裏'A'在' '一個' 來自:陣列([ (25,26,27)])'? –

+1

您的代碼包含未定義的標識符,使其難以閱讀,什麼是_liste_?我知道這可能是list1,但是_g_a_是什麼?考慮重寫您的代碼以提供一個獨立的示例。 – deStrangis

+0

對不起,我忘了覆蓋'g_a'。 g_a與list2相同。在這個代碼中,list1有類型列表幷包含兩個字典。任何字典都包含4個鍵(a,b,i,c)和值(相應的數組)。我只想用來自列表2元素的數組替換來自鍵a的值。 – lara

回答

0

這裏是一個字典理解在python 2.7使用一襯墊:

[{k: d[k] if k != 'a' else list2[i] for k in d} for i, d in enumerate(list1)] 

它給出:

[{'a': [21, 22, 23], 'i': 'stop', 'c': [7, 8, 9], 'b': [4, 5, 6]}, {'a': [25, 26, 27], 'i': 'stop', 'c': [7, 8, 9], 'b': [4, 5, 6]}] 
+0

謝謝伊曼紐爾! – lara