首页 新闻 赞助 找找看

python关于排班的问题

0
悬赏园豆:20 [待解决问题]

有人员列表,按每人一天的排斑!
如何能做到最大优化
方法1:
import calendar
person=['mary','tom','jimmy','john']
year=2020
month=6

l = list(range(1,calendar.monthrange(year,month)[1]+1))
n = len(person)

z=[dict(zip(person,x)) for x in [l[i:i + n] for i in range(0, len(l), n)]]
print(z)

========================
[{'mary': 1, 'tom': 2, 'jimmy': 3, 'john': 4}, {'mary': 5, 'tom': 6, 'jimmy': 7, 'john': 8}, {'mary': 9, 'tom': 10, 'jimmy': 11, 'john': 12}, {'mary': 13, 'tom': 14, 'jimmy': 15, 'john': 16}, {'mary': 17, 'tom': 18, 'jimmy': 19, 'john': 20}, {'mary': 21, 'tom': 22, 'jimmy': 23, 'john': 24}, {'mary': 25, 'tom': 26, 'jimmy': 27, 'john': 28}, {'mary': 29, 'tom': 30}]

方法2:
import calendar
person=['mary','tom','jimmy','john']
year=2020
month=6

l = list(range(1,calendar.monthrange(year,month)[1]+1))
n = len(person)

p=[l[i:i + n] for i in range(0, len(l), n)]

z=[dict(zip(person,x)) for x in [l[i:i + n] for i in range(0, len(l), n)]]

temp=None
for i in z:
if temp == None:
temp=i
for key in temp.keys() & i.keys():
if temp[key]==i[key]:
d3=temp
else:
d3[key] = "{},{}".format(temp[key], i[key])
temp = d3

print(d3)

=====================
{'mary': '1,5,9,13,17,21,25,29', 'tom': '2,6,10,14,18,22,26,30', 'jimmy': '3,7,11,15,19,23,27', 'john': '4,8,12,16,20,24,28'}

求大佬,还有更简便的方法?

leemamas的主页 leemamas | 初学一级 | 园豆:182
提问于:2020-06-05 10:33
< >
分享
所有回答(1)
0

建议格式化代码,本编辑器支持markdown

会长 | 园豆:12401 (专家六级) | 2020-06-05 16:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册