字符串排序
提取排序后,按索引赋值返回。
def string_resort(seq):
container = []
for su in seq:
if su.isalpha():
container.append(su)
container.sort()
idx = 0
for si in range(len(seq)):
if seq[si].isalpha():
seq[si] = container[idx]
idx += 1
return seq
if __name__ == '__main__':
seq = list(input().strip())
if len(seq) > 60:
res = string_resort(seq[:60]) + seq[60:]
else:
res = string_resort(seq)
print(''.join(res))
'''
Welcom to JJWorld, 17 Go Go Go!
'''
键值对拆分
使用字符串的split方法来解决,输出可以使用字符串的join方法来控制格式。
def split_string(s, each, gap):
seq = s.split(each)
res = []
for su in seq:
left, right = su.split(gap)
res.append(''.join([left, '->', right]))
return res
if __name__ == '__main__':
s = input().strip()
each = input().strip()
gap = input().strip()
res = split_string(s, each, gap)
print(' '.join(res))
'''
a1=1&b1=2&c1=3
&
=
'''
在线时长计算
按用户建立关于记录的字典,记录由时间和类型的键值对组成。对单个用户进行数据提取,分别对登录和下线的时间线排序,相应的累加其减值即为最终结果。
import sys
from collections import defaultdict
def online_times(values):
if not values:
return 0
res = dict()
for user, value in values.items():
left, right = split_value(value)
cur = 0
for lu, ru in zip(left, right):
cur += (ru-lu)
res[user] = cur
return res
def split_value(value):
left, right = [], []
for vk, vu in value.items():
if vu == 0:
left.append(vk)
else:
right.append(vk)
left.sort()
right.sort()
return left, right
if __name__ == '__main__':
values = defaultdict(dict)
for line in sys.stdin:
user, time, type = list(map(int, line.strip().split(',')))
values[user][time] = type
res = online_times(values)
for rk, ru in res.items():
print(','.join([str(rk), str(ru)]))
'''
1001,1565855421,0
1002,1565855421,0
1001,1565855424,1
1001,1565855426,0
1002,1565855427,1
1001,1565855428,1
'''
(最近更新:2019年09月16日)