Python:用数组替换字典中的值

时间:2014-07-01 16:26:24

标签: python

我想将list1的第一个键的值替换为list2的元素。但是以下代码的输出是:

输出

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])}]

错误在哪里?非常感谢你提前!

1 个答案:

答案 0 :(得分:0)

这是python 2.7中的dict理解,带有一行代码:

[{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]}]