python 如何按规则分配数据?
规则变量: rule = [{
'name': 'rule1',
'users': '1,2,3,4,5,6,7',
'weekday': '1,2,3,4,5'
},{
'name': 'rule1',
'users': '8',
'weekday': '6,7'
}]
用户列表:users = [{
'id': 1,
'name': '人员1'
},{
'id': 2,
'name': '人员2'
},{
'id': 3,
'name': '人员3'
},{
'id': 4,
'name': '人员4'
},{
'id': 5,
'name': '人员5'
},{
'id': 6,
'name': '人员6'
},{
'id': 7,
'name': '人员7'
},{
'id': 8,
'name': '人员8'
}]
怎么按 rule 中的规则把人员列表按月分配到每一天中?
结果:{'date': '2022-07-01', 'week': '星期五', 'member': '人员1'}
{'date': '2022-07-02', 'week': '星期六', 'member': '人员8'}
{'date': '2022-07-03', 'week': '星期日', 'member': '人员8'}
{'date': '2022-07-04', 'week': '星期一', 'member': '人员2'}
{'date': '2022-07-05', 'week': '星期二', 'member': '人员3'}
{'date': '2022-07-06', 'week': '星期三', 'member': '人员4'}
{'date': '2022-07-07', 'week': '星期四', 'member': '人员5'}
{'date': '2022-07-08', 'week': '星期五', 'member': '人员6'}
{'date': '2022-07-09', 'week': '星期六', 'member': '人员8'}
{'date': '2022-07-10', 'week': '星期日', 'member': '人员8'}
{'date': '2022-07-11', 'week': '星期一', 'member': '人员7'}
......
{'date': '2022-07-31', 'week': '星期日', 'member': '人员8'}
并且在 rule 中增加其它规则的话可以按规则做出相应匹配,请各位大佬指点指点!!!!感谢!!!
回答:
# Running the provided code to see the outputfrom datetime import datetime, timedelta
# 规则变量
rules = [
{
'name': 'rule1',
'users': '1,2,3,4,5,6,7',
'weekday': '1,2,3,4,5'
},
{
'name': 'rule2',
'users': '8',
'weekday': '6,7'
}
]
# 用户列表
users = [
{'id': 1, 'name': '人员1'},
{'id': 2, 'name': '人员2'},
{'id': 3, 'name': '人员3'},
{'id': 4, 'name': '人员4'},
{'id': 5, 'name': '人员5'},
{'id': 6, 'name': '人员6'},
{'id': 7, 'name': '人员7'},
{'id': 8, 'name': '人员8'}
]
# 创建用户ID到名称的映射
user_map = {user['id']: user['name'] for user in users}
# 开始日期
start_date = datetime(2022, 7, 1)
# 结束日期
end_date = datetime(2022, 7, 31)
# 当前日期
current_date = start_date
# 结果列表
result = []
# 当前用户索引
user_index = 0
# 遍历日期范围
while current_date <= end_date:
# 获取当前星期
current_weekday = current_date.weekday() + 1
# 遍历规则
for rule in rules:
# 检查当前星期是否在规则中
if str(current_weekday) in rule['weekday']:
# 获取用户列表
rule_users = [int(user_id) for user_id in rule['users'].split(',')]
# 获取当前用户
current_user_id = rule_users[user_index % len(rule_users)]
# 获取用户名称
current_user_name = user_map[current_user_id]
# 添加到结果
result.append({
'date': current_date.strftime('%Y-%m-%d'),
'week': '星期' + '一二三四五六日'[current_weekday - 1],
'member': current_user_name
})
# 更新用户索引
user_index += 1
# 更新当前日期
current_date += timedelta(days=1)
# Printing the results
result
输出:
[{'date': '2022-07-01', 'week': '星期五', 'member': '人员1'}, {'date': '2022-07-02', 'week': '星期六', 'member': '人员8'},
{'date': '2022-07-03', 'week': '星期日', 'member': '人员8'},
{'date': '2022-07-04', 'week': '星期一', 'member': '人员4'},
{'date': '2022-07-05', 'week': '星期二', 'member': '人员5'},
{'date': '2022-07-06', 'week': '星期三', 'member': '人员6'},
{'date': '2022-07-07', 'week': '星期四', 'member': '人员7'},
{'date': '2022-07-08', 'week': '星期五', 'member': '人员1'},
{'date': '2022-07-09', 'week': '星期六', 'member': '人员8'},
{'date': '2022-07-10', 'week': '星期日', 'member': '人员8'},
{'date': '2022-07-11', 'week': '星期一', 'member': '人员4'},
{'date': '2022-07-12', 'week': '星期二', 'member': '人员5'},
{'date': '2022-07-13', 'week': '星期三', 'member': '人员6'},
{'date': '2022-07-14', 'week': '星期四', 'member': '人员7'},
{'date': '2022-07-15', 'week': '星期五', 'member': '人员1'},
{'date': '2022-07-16', 'week': '星期六', 'member': '人员8'},
{'date': '2022-07-17', 'week': '星期日', 'member': '人员8'},
{'date': '2022-07-18', 'week': '星期一', 'member': '人员4'},
{'date': '2022-07-19', 'week': '星期二', 'member': '人员5'},
{'date': '2022-07-20', 'week': '星期三', 'member': '人员6'},
{'date': '2022-07-21', 'week': '星期四', 'member': '人员7'},
{'date': '2022-07-22', 'week': '星期五', 'member': '人员1'},
{'date': '2022-07-23', 'week': '星期六', 'member': '人员8'},
{'date': '2022-07-24', 'week': '星期日', 'member': '人员8'},
{'date': '2022-07-25', 'week': '星期一', 'member': '人员4'},
{'date': '2022-07-26', 'week': '星期二', 'member': '人员5'},
{'date': '2022-07-27', 'week': '星期三', 'member': '人员6'},
{'date': '2022-07-28', 'week': '星期四', 'member': '人员7'},
{'date': '2022-07-29', 'week': '星期五', 'member': '人员1'},
{'date': '2022-07-30', 'week': '星期六', 'member': '人员8'},
{'date': '2022-07-31', 'week': '星期日', 'member': '人员8'}]
以上是 python 如何按规则分配数据? 的全部内容, 来源链接: utcz.com/p/938551.html