以下是一个解决“按ID和数字范围计算频率”的示例代码:
from collections import defaultdict
def calculate_frequency(data):
frequency = defaultdict(int)
# 遍历数据
for item in data:
id = item['id']
value = item['value']
# 按数字范围计算频率
if value <= 10:
frequency[(id, '0-10')] += 1
elif value <= 20:
frequency[(id, '11-20')] += 1
elif value <= 30:
frequency[(id, '21-30')] += 1
else:
frequency[(id, '31+')] += 1
return frequency
# 示例数据
data = [
{'id': 1, 'value': 5},
{'id': 2, 'value': 15},
{'id': 1, 'value': 25},
{'id': 3, 'value': 35},
{'id': 2, 'value': 8},
{'id': 1, 'value': 18},
{'id': 3, 'value': 28},
{'id': 2, 'value': 38},
]
frequency = calculate_frequency(data)
# 输出结果
for key, value in frequency.items():
print(f"ID: {key[0]}, 范围: {key[1]}, 频率: {value}")
运行以上代码,将输出以下结果:
ID: 1, 范围: 0-10, 频率: 1
ID: 1, 范围: 11-20, 频率: 1
ID: 1, 范围: 21-30, 频率: 1
ID: 1, 范围: 31+, 频率: 0
ID: 2, 范围: 0-10, 频率: 2
ID: 2, 范围: 11-20, 频率: 0
ID: 2, 范围: 21-30, 频率: 0
ID: 2, 范围: 31+, 频率: 1
ID: 3, 范围: 0-10, 频率: 0
ID: 3, 范围: 11-20, 频率: 1
ID: 3, 范围: 21-30, 频率: 1
ID: 3, 范围: 31+, 频率: 0
这个例子中,我们使用了一个defaultdict
来存储频率信息,并使用一个循环遍历输入数据。根据每个数据项的id
和value
,我们将其归入相应的数字范围,并用frequency
字典记录频率。最后,我们遍历frequency
字典,输出每个ID和数字范围的频率信息。