我有一个列表,它记录了一个特定建筑的用电情况。采样每30分钟进行一次。我用字典按天/月对样本进行分组,然后我计算出每天的最大值,然后减去前一天的值,这样我就可以得到当天的总数。其中总功率为千瓦时
我遇到的一个问题是如何计算第一天/第一个月的第一个最大值,因为我无法与之进行比较,因为这是第一个最大值样本?如果有更好的方法,请告诉我? 我计划处理这个问题的方法是在这段时间内,在我得到足够的数据之前,找出最小值和最大值之间的差异
我创建了一个列表作为示例。第一列将是月份和第二个记录值
下面显示按月份分组的字典,然后查找最大值。 您可以看到,一旦发现最大值和差异,第1个月将不会被计算在内?我应该得到的结果是{1:4,2:10,3:25},这是一个月的总和,然后 {1:39}这一年
dict1 = {1: [1, 3, 4, 5], 2: [7, 8, 9, 10, 15], 3: [20, 25, 40]}
dict2 = {1: 5, 2: 15, 3: 40}
这是到目前为止的代码,因为我的方法不起作用,所以我注释掉了操作以获得年度和月度的总数
list1 = [[1, 1],
[1, 1],
[1, 0],
[1, 3],
[1, 4],
[1, 5], # max
[2, 7],
[2, 8],
[2, 9],
[2, 10],
[2, 15], # max
[3, 20],
[3, 25],
[3, 40]] # max
# using min/max of each day/month I'll miss the usage between the last value for the
# day/month and
# first value of next day/month.
# ex: day 1: 5 - 1 = 4 , day 2: = 9 - 7 = 2, day 3: 40 - 12 = 28
# missed usage from 5 to 7 and 9 to 12
# taking the difference between max values of each day/month
# ex: day 1: = 5, day 2: = 9, day 3 = 40 day 1 = 4, day 2 = 31
#
#
dict1 = {}
dict2 = {}
dict3 = {}
for i, j in list1:
if j > 0: # Samples will always be greater than zero so eliminate any sample that's not.
dict1.setdefault(i, []).append(j) # Group all the samples by day/month.
dict1[i] = sorted(list(set(dict1[i]))) # Check for duplicate samples
max_ = max(dict1[i])
dict2[i] = max_
print(dict1)
print(dict2)
您可以使用字典理解来完成所需的操作:
list1
读入dict1
:dict1
以获得差异:您可以简单地使用索引-1和0来表示最大值和最小值,因为列表是针对每个日期排序的
dict2
获取该年的总数:相关问题 更多 >
编程相关推荐