python 如何按规则分配数据?

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 output

from 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

回到顶部