python format 槽中槽_在python中从列表中提取槽

我还假设您希望:

(a) 合并连续约会(即在前一个约会结束后立即开始的约会)

(b) 按照上述方式格式化这些文件

(c) 把这些按天排列成扁平的列表。在

如果是这样,可以使用以下方法解决此问题:

(a)创建一个helper函数,将日、小时和分钟变量转换为分钟:def get_minute_val(day_val,hour_val,min_val):

return (24*60*day_val)+(60*hour_val)+min_val

(b)生成一个接受两个约会的函数,如果两个约会是连续的,则将它们合并为一个;如果不是连续的,则返回未合并的约会

^{pr2}$

(c)对列表中的每个约会反复调用此函数,比较与最近添加的约会。我有一种处理第一次约会的方法。在def combine_all_appointments(app_list):

#Add first appointment to app list

output_list = [test[0]]

#Loop through remaining appointments

for next_app in app_list[1:]:

#Remove most recent appointment to output list

prev_app = output_list.pop()

#Add either 2 combined appointments, or one single appointment to outputlist

output_list += combine_if_overlap(prev_app,next_app)

return output_list

(d)创建一个符合您需要的格式的函数def format_appointments(app_list):

return [[x[0],'%d:%02d' % (x[1],x[2]),'%d:%02d' %(x[3],x[4])] for x in app_list]

(e)和单独的一个,将约会按天分组,并按天扁平化。在def group_by_day(app_list):

output = {}

#Loop through appointments

for app in app_list:

#Create new entry if day not yet in output dict

if app[0] not in output:

output[app[0]] = app[1:]

#Add appointment values to relevant day

else:

output[app[0]] += app[1:]

#Flatten dictionary

return [[k, *output[k]] for k in output]

对您的输入进行测试:test = [[0, 4, 0, 4, 59],[0, 5, 0, 5, 59], [0, 6, 0, 6, 59], [0, 13, 0, 13, 59], [0, 14, 0, 14, 59], [0, 21, 0, 21, 59], [0, 22, 0, 22, 59], [1, 5, 0, 5, 59], [1, 6, 0, 6, 59], [1, 13, 0, 13, 59], [1, 14, 0, 14, 59], [1, 21, 0, 21, 59], [1, 22, 0, 22, 59], [2, 5, 0, 5, 59], [2, 6, 0, 6, 59], [2, 13, 0, 13, 59], [2, 14, 0, 14, 59], [2, 21, 0, 21, 59], [2, 22, 0, 22, 59], [3, 5, 0, 5, 59], [3, 6, 0, 6, 59], [3, 13, 0, 13, 59], [3, 14, 0, 14, 59], [3, 21, 0, 21, 59], [3, 22, 0, 22, 59], [4, 5, 0, 5, 59], [4, 6, 0, 6, 59], [4, 13, 0, 13, 59], [4, 14, 0, 14, 59], [4, 21, 0, 21, 59], [4, 22, 0, 22, 59], [5, 5, 0, 5, 59], [5, 6, 0, 6, 59], [5, 13, 0, 13, 59], [5, 14, 0, 14, 59], [5, 21, 0, 21, 59], [5, 22, 0, 22, 59], [6, 5, 0, 5, 59], [6, 6, 0, 6, 59], [6, 13, 0, 13, 59], [6, 14, 0, 14, 59], [6, 21, 0, 21, 59], [6, 22, 0, 22, 59]]

app_list = combine_all_appointments(test)

formatted = format_appointments(app_list)

grouped = group_by_day(formatted)

退货[[0, '4:00', '6:59', '13:00', '14:59', '21:00', '22:59'], [1, '5:00', '6:59', '13:00', '14:59', '21:00', '22:59'], [2, '5:00', '6:59', '13:00', '14:59', '21:00', '22:59'], [3, '5:00', '6:59', '13:00', '14:59', '21:00', '22:59'], [4, '5:00', '6:59', '13:00', '14:59', '21:00', '22:59'], [5, '5:00', '6:59', '13:00', '14:59', '21:00', '22:59'], [6, '5:00', '6:59', '13:00', '14:59', '21:00', '22:59']]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值