You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python按性别、姓名排序列表并标准化格式出错求助

修正Python数据排序问题

输入示例

4
m.hosSein.python
f.miNa.C
m.aHMad.C++
f.Sara.java

每行数据格式为性别.姓名.编程语言,其中f代表女性,m代表男性。

预期输出

f Mina C
f Sara java
m Ahmad C++
m Hossein python

问题代码

input1=int(input())

results = []
for k in range(input1):
    input2 = input().split(".")
    results.append(input2)

results.sort(key=lambda x:(x[0::]), reverse=False)

for i in results:
    i[1]=str(i[1])
    i[1]=i[1].title()
    print(i[0],str(i[1]), i[2])

问题原因

当前排序使用原始拆分后的整个列表作为依据,而原始姓名是大小写混合的字符串。比如miNa的原始首字母是小写m(ASCII码109),Sara的原始首字母是大写S(ASCII码83),由于大写字母ASCII码小于小写字母,排序时Sara会排在miNa前面,不符合预期的姓名字典序。

修正后的代码

input1 = int(input())

results = []
for k in range(input1):
    input2 = input().split(".")
    results.append(input2)

# 按性别优先,再按姓名的小写形式排序,保证字典序正确性
results.sort(key=lambda x: (x[0], x[1].lower()))

for i in results:
    name = i[1].title()
    print(i[0], name, i[2])

说明

  • 排序时将姓名转为小写作为排序依据,这样miNa和Sara会按照mina和sara的字典序排列,确保Mina排在Sara之前。
  • 保持性别优先的排序逻辑,相同性别下按姓名字典序排列。

内容的提问来源于stack exchange,提问作者economy m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:50:28