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

2024-04-25 09:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表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])}]

我怎样才能做到这一点?你知道吗


Tags: ofkeyinfordatavalueitemarray
2条回答

对于感兴趣的人:现在我有如下解决方案:

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

所以当ValueError异常出现时。你知道吗

===当内置操作或函数接收到类型正确但值不合适的参数时引发,并且这种情况不是由更精确的异常(如IndexError)描述的。你知道吗

查看循环中的数据值。你知道吗

相关问题 更多 >

    热门问题