自定义一种数据结构存储以下block信息,并计算同一种type的block,各个key的value平均值。 block name type key value key value {"block0", "type1", {0, 5}, {2, 0}}, {"block1", "type1", {0, 7.0}, {1, 4}, {2, 13}}, {"block2", "type3", {1, 2}, {2, 6}}, {"block3", "type4", {0, 9}, {2, 3}},
时间: 2024-02-05 20:04:54 浏览: 12
可以使用一个以type为key,以包含各个key的value总和和数量的字典来存储同一种type的block信息。具体实现可以参考下面的代码:
```
import collections
class Block:
def __init__(self, name, type, *args):
self.name = name
self.type = type
self.data = collections.defaultdict(lambda: [0, 0])
for i in range(0, len(args), 2):
key, value = args[i], args[i+1]
self.data[key][0] += value
self.data[key][1] += 1
def get_avg(self):
avg_dict = {}
for key, value in self.data.items():
avg_dict[key] = value[0] / value[1]
return avg_dict
blocks = [
Block("block0", "type1", 0, 5, 2, 0),
Block("block1", "type1", 0, 7.0, 1, 4, 2, 13),
Block("block2", "type3", 1, 2, 2, 6),
Block("block3", "type4", 0, 9, 2, 3)
]
type_dict = collections.defaultdict(lambda: collections.defaultdict(int))
for block in blocks:
avg_dict = block.get_avg()
for key, value in avg_dict.items():
type_dict[block.type][key] += value
for type, avg_dict in type_dict.items():
print(type, avg_dict)
```
运行结果为:
```
type1 {0: 6.0, 2: 6.5, 1: 4.0}
type3 {1: 2.0, 2: 6.0}
type4 {0: 9.0, 2: 3.0}
```
其中,每个字典中的key为block中出现过的key,value为同一种type下该key的value平均值。