Python列表排序问题求助:女性组字母排序异常
问题原因及解决办法
你的代码有两个关键问题导致排序不符合预期:
- 未使用排序后的结果:你把排序后的列表赋值给了
list变量,但后续遍历的还是原始的lst,等于排序操作完全没生效。 - 排序未忽略大小写:直接用原名字字符串排序时,大小写会干扰字典序比较(比如
'Sara'的首字母SASCII码大于'miNa'的m),导致女性组内排序错误。
修正后的代码
n = int(input()) lst = [] for i in range(n): x = input().split('.') lst.append(x) # 排序规则:先按性别分组,再按名字小写形式忽略大小写排序 sorted_lst = sorted(lst, key=lambda x: (x[0], x[1].lower())) for item in sorted_lst: print(item[0], item[1].capitalize(), item[2])
关键修改说明
- 把排序结果存入
sorted_lst(避免覆盖Python内置的list类型),后续遍历这个已排序的列表。 - 排序的key改为
(x[0], x[1].lower()):先按性别区分先后(f在前,m在后),再按名字的小写形式做字典序排序,确保大小写不影响排序逻辑。 - 输出时用
capitalize()将名字转为首字母大写格式,匹配预期输出要求。
测试你的输入后,会得到预期结果:
f Mina C f Sara java m Ahmad C++ m Hossein python
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

