因此,我是python的新手,并且创建了如下所示的信息列表:
格式为日期,商店,当日总收入(当日)和交易(当日)
data = [[datetime.datetime(2012, 3, 1, 0), 'PizzaHut', 2839.60, 25], [datetime.datetime(2012, 12, 4, 0), 'Dominoes', 2839.60, 25], [datetime.datetime(2012, 11, 8, 0), 'Sals', 2839.60, 25], [datetime.datetime(2012, 6, 4, 0), 'Sals', 2839.60, 25], [datetime.datetime(2012, 8, 12, 0), 'PizzaHut', 2839.60, 25]
因此,本质上我想做的就是查询某个商店的总收入。因此,用户应输入“ Sals”,它将根据列表中的数据总计该商店的收入。解决这个问题的方法可能很简单,但是我一直在网上四处寻找,因此决定是时候让我问大家了。如果我能对它的工作方式有一些解释,那对我既有帮助,也能帮助我增进知识!谢谢大家的贡献!
解决方案
使用sum()
例如:
import datetime
data = [[datetime.datetime(2012, 3, 1, 0), 'PizzaHut', 2839.60, 25], [datetime.datetime(2012, 12, 4, 0), 'Dominoes', 2839.60, 25], [datetime.datetime(2012, 11, 8, 0), 'Sals', 2839.60, 25], [datetime.datetime(2012, 6, 4, 0), 'Sals', 2839.60, 25], [datetime.datetime(2012, 8, 12, 0), 'PizzaHut', 2839.60, 25]]
key = 'Sals'
print( sum(i[2] for i in data if i[1] == key) )
输出:
5679.2
根据评论编辑
import datetime
import collections
data = [[datetime.datetime(2012, 3, 1, 0), 'PizzaHut', 2839.60, 25], [datetime.datetime(2012, 12, 4, 0), 'Dominoes', 2839.60, 25], [datetime.datetime(2012, 11, 8, 0), 'Sals', 2839.60, 25], [datetime.datetime(2012, 6, 4, 0), 'Sals', 2839.60, 25], [datetime.datetime(2012, 8, 12, 0), 'PizzaHut', 2839.60, 25]]
key = 'Sals'
d = collections.defaultdict(list)
for i in data:
d[i[1]].append(i)
print( "Sum: {0}".format(sum(i[2] for i in d[key])) )
print( "Average: {0}".format(sum(i[2] for i in d[key])/len(d[key])) )
输出:
Sum: 5679.2
Average: 2839.6
按日期分组
key = datetime.datetime(2012, 12, 4, 0)
d = collections.defaultdict(list)
for i in data:
d[i[0]].append(i)