问题描述
安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位
输入格式
第一行一个整数n,表示有n个身份证号码
余下的n行,每行一个身份证号码。
输出格式
按出生日期从大到小排序后的身份证号,每行一条
样例输入
5
466272307503271156
215856472207097978
234804580401078365
404475727700034980
710351408803093165
样例输出
404475727700034980
234804580401078365
215856472207097978
710351408803093165
466272307503271156
思路:提取后6位、前6位、中间8位依次进行排序,最后只输出号码即可。
n=int(input())
li=[]
temp=[[]for i in range(n)]
for i in range(n):li.append(input())
for i in range(n):temp[i].append(li[i])temp[i].append(int(li[i][6:14]))temp[i].append(int(li[i][0:6]))temp[i].append(int(li[i][14:18]))
temp.sort(key=lambda x:x[3],reverse=True) #先比较后4位
temp.sort(key=lambda x:x[2],reverse=True) #再比较前6位
temp.sort(key=lambda x:x[1],reverse=True) #最后比较中间8位
for i in range(n):print(temp[i][0])
本文发布于:2024-02-01 00:25:39,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671833932481.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |