是同一tup中元素的和值

2024-09-30 14:38:22 发布

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

我从sqlite数据库中选择数据并使用以下方法创建词典:

self.cur.execute('''SELECT description,quantity from assetTable''')
    assetTuples = self.cur.fetchall()
    dic = defaultdict(list)
    for k,v in assetTuples:
        dic[k].append(v)

这给了我一本词典,它打印如下:

^{pr2}$

如何对同一元组中元素的值求和?我希望它的结局是:

{'asset1': [36], 'asset2': [11], 'asset3': [99]}

Tags: 数据方法fromself数据库executesqlitedescription
3条回答
>>> assetTuples=[('asset1',11),('asset1',25),('asset2',11),('asset3',99)]
>>> dic=defaultdict(list)
>>> for k,v in assetTuples:
...     if dic[k]==[]:
...        dic[k]=[v]
...     else:
...        dic[k][0]+=v
... 
>>> dic
defaultdict(<type 'list'>, {'asset2': [11], 'asset3': [99], 'asset1': [36]})

假设,assetTuples看起来像这样

assetTuples = [('asset1', 11), ('asset1', 25), ('asset2', 6), ('asset2', 5), ('asset3', 88), ('asset3', 11)]

您可以简单地像这样迭代和累积值

^{pr2}$

新dict结果:

d={'asset1': [11, 25], 'asset2': [6, 5], 'asset3': [88, 11]}
result = {e:[sum(d[e])] for e in d}

如果要更新相同的变量:

^{pr2}$

相关问题 更多 >