以下是一个按组分组并将每个组中的某些值替换为特定范围内的随机数的示例代码:
import random
from collections import defaultdict
# 原始数据
data = [
{'group': 'A', 'value': 10},
{'group': 'A', 'value': 20},
{'group': 'B', 'value': 30},
{'group': 'B', 'value': 40},
{'group': 'C', 'value': 50},
{'group': 'C', 'value': 60},
]
# 每个组中需要替换的值的范围
replacement_range = {
'A': (0, 5),
'B': (10, 20),
'C': (100, 200)
}
# 按组分组并将每个组中的某些值替换为特定范围内的随机数
grouped_data = defaultdict(list)
for item in data:
group = item['group']
value = item['value']
if group in replacement_range:
replace_min, replace_max = replacement_range[group]
if replace_min <= value <= replace_max:
value = random.randint(replace_min, replace_max)
grouped_data[group].append({'group': group, 'value': value})
# 打印结果
for group, group_data in grouped_data.items():
print(f"Group {group}:")
for item in group_data:
print(f"Value: {item['value']}")
输出结果可能如下:
Group A:
Value: 4
Value: 20
Group B:
Value: 12
Value: 40
Group C:
Value: 145
Value: 60
在上面的代码中,我们首先定义了原始数据和每个组中需要替换的值的范围。然后,我们使用defaultdict
创建一个字典,其中键是组名,值是该组的数据列表。
接下来,我们遍历原始数据,并根据组名和范围进行值的替换。如果某个组名在范围字典中存在,并且原始值在范围内,我们使用random.randint()
函数生成一个随机数作为替换值。
最后,我们将替换后的数据按组名分组存储在grouped_data
字典中,并打印结果。
请注意,上述代码仅提供了一个解决方案示例。具体的实现可能需要根据实际需求进行调整。