中级农民
- 积分
- 135
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2020-6-15
- 最后登录
- 1970-1-1
|
各位大哥大姐,帮忙看看这道题,有没有更好的办法?那里可以改进?这是2019.05 DE原题。
- '''
- 给一组杂乱无章的数据,存在list中,要求输出排好序的数据:
- 方括号里面是数字的,按照数字从小到大排序
- 方括号里面是字母的,按照字母的字典序排序(a在b前,b在c前)
- 最后是下划线结尾的,按照下划线后面的单词,字典序排序
- '''
-
- data = [
- 'Customer.library.data[21]',
- 'Customer.library.data[17]',
- 'Customer.library.data[2]',
- 'Customer.service.timer.doc[kcd]',
- 'Customer.service.timer.doc[ace]',
- 'Customer.service.timer.doc[fff]',
- 'Customer.service.timer_good',
- 'Customer.service.timer_bad',
- 'Customer.service.timer_something'
- ]
-
- output = [
- 'Customer.library.data[2]',
- 'Customer.library.data[17]',
- 'Customer.library.data[21]',
- 'Customer.service.timer.doc[ace]',
- 'Customer.service.timer.doc[fff]',
- 'Customer.service.timer.doc[kcd]',
- 'Customer.service.timer_bad',
- 'Customer.service.timer_good',
- 'Customer.service.timer_something'
- ]
-
- def helper(data):
- new_data = []
- for c in data:
- if '[' in c:
- c = c.replace('[','-').replace(']','')
- new_data.append(c)
- else:
- c += '-'
- new_data.append(c)
- result = [item.split('-') for item in new_data]
- for num in result:
- if num[1].isdigit():
- num[1] = int(num[1])
- result.sort()
- list1 = []
- for num in result:
- if num[1] != '':
- num[1] = str([num[1]])
- list1.append(''.join(num))
- else:
- list1.append(num[0])
- return list1
- print(helper(data))
复制代码
|
|