数据库中字典中的重复键

时间:2016-08-21 17:23:11

标签: python sqlite

当我对我的数据库进行查询时,我会返回这样的值:

tuplematches = cursor.fetchall()
for items in tuplematches:
    print(items)

打印为:

    NAME/                     PRICE/  HOURS/
1. ('honda accord 2nd light', 20.00, 10.0)
2. ('honda accord 2nd light', 22.00, 17.0)
3. ('chevy silverado headlight', 30.00, 20.0)

我想要的是创建一个字典,其中键是项目的名称, 并且该值是一个列表,其中包含具有此名称的项目的所有价格的总计,以及小时数和NAME发生次数之和。对于每个人的名字:

    mydict[name] = [summed price, summed hours, occurences]
    mydict['honda accord 2nd light'] = [42.00, 27.0, 2]
我已经尝试了几种不同的方法,但我无法弄清楚为什么,而不是给我非重复的名称作为其所有组合值的键,它给了我一个字典,其中包含多个不同的同名实例和它们自己的不同值,这对我没有好处。像这样:

    mydict['honda accord 2nd light'] = [21.00, 13.5, 2]
    mydict['honda accord 2nd light'] = [44.00, 27.0, 2]
    mydict['honda accord 2nd light'] = [23.00, 19.0, 5]

这里的最终目标是获得每个项目名称的平均价格,平均小时数和总出现次数。

    dict[name] = [average price,  average hours, total occurences]

任何想法我能做些什么来让这更容易,更少痛苦?

1 个答案:

答案 0 :(得分:0)

由于您已经在处理数据库,为什么不在查询中进行聚合?

select NAME, SUM(PRICE) AS PRICE, SUM(HOURS) AS HOURS, COUNT(*) AS OCCURENCE
from ...
group by NAME