将新列表附加到列表中的词典

时间:2014-07-17 12:22:45

标签: python python-2.7

我有一个字典列表list_of_data,我想用新条目formula更新:

import itertools

list_of_data = [{'a':array([1,2]),  'b':array([3,4]) ,  'c':array([5,6])  }, 
                {'a':array([7,8]),  'b': array([9,10]), 'c':array([1,2])  },
                {'a':array([-1,4]), 'b': array([1,10]), 'c':array([4,5])  }]
#seperate keys with corresponding values
list_of_a=[]
list_of_b=[]
list_of_c=[]       

for item in list_of_data:
    for key, value in item.iteritems():
        if key =='a':
            list_of_a.append(value.tolist())
        elif key =='b':
            list_of_b.append(value.tolist()) 
        elif key == 'c':
            list_of_c.append(value.tolist())

formula=[]
for i,val in enumerate(list_of_a):

    la=list_of_a[i]
    lb=list_of_b[i]
    lc=list_of_c[i]

    for a,b,c in itertools.izip(la, lb, lc):
        formula.append((a**2)+2*b*c))

for k in range(len(list_of_data)):
    result = {'formula':formula[k]}
    list_of_data[k].update(result)

输出的结果是:

formula =[31, 52, 67, 104, 9,116]

list_of_data = [{'a':array([1,2]),  'b':array([3,4]) ,  'c':array([5,6]), 'formula': 31 }, 
                {'a':array([7,8]),  'b': array([9,10]), 'c':array([1,2]), 'formula': 52 },
                {'a':array([-1,4]), 'b': array([1,10]), 'c':array([4,5]), 'formula': 67 }]

我想得到什么:

formula =[[31, 52], [67, 104], [9,116]]

list_of_data = [{'a':array([1,2]),  'b':array([3,4]) ,  'c':array([5,6]), 'formula': array([31, 52])}, 
                {'a':array([7,8]),  'b': array([9,10]), 'c':array([1,2]), 'formula': array([67, 104])},
                {'a':array([-1,4]), 'b': array([1,10]), 'c':array([4,5]), 'formula': array([9, 116])}]

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

感兴趣的各方:现在我已经得到了以下解决方案:

n = len(list_of_c)

formula=[[]*n for x in xrange(n)]
for i,val in enumerate(list_of_a):
    la=list_of_a[i]
    lb=list_of_b[i]
    lc=list_of_c[i]

    for a,b,c in itertools.izip(la, lb, lc):
         formula[i].append(((a**2)+2*b*c))

答案 1 :(得分:-1)

当引发ValueError异常时。

===当内置操作或函数接收到具有正确类型但值不合适的参数的情况时引发,并且情况不会由更准确的异常(如IndexError)描述。

循环查看您的数据值。