有人能帮忙写个简单的按名字首字母排序python程序吗?

就是输入几个人的名字,按照姓的字母顺序排列,如果姓相同,就按名的字首字母排列,下面这个是范例:Howmanynamesdoyouwanttoenter?5Enternam... 就是输入几个人的名字,按照姓的字母顺序排列,如果姓相同,就按名的字首字母排列,下面这个是范例:
How many names do you want to enter? 5
Enter name #1: Bill Clinton
Enter name #2: Michael Jackson
Enter name #3: Tony Blair
Enter name #4: Janet Jackson
Enter name #5: Oprah Winfrey
The names in order are:
Blair, Tony
Clinton, Bill
Jackson, Janet
Jackson, Michael
Winfrey, Oprah
展开
 我来答
桂镶桖28
2011-03-29 · TA获得超过593个赞
知道小有建树答主
回答量:307
采纳率:0%
帮助的人:210万
展开全部
#--encoding:utf-8--
def sortName(list):
#保存名字和第一个字母的map
nameMap ={}
#保存第一个字母并稍后进行排序
nameList =[]
for i in list:
nameMap[i[0]] = i
nameList.append(i[0])
nameList.sort()
for i in nameList:
print(nameMap[i])

if __name__ == '__main__':
list = ['Michael jack','Bill Cliton','Tony']
sortName(list)

运行结果:

Bill Cliton
Michael jack
Tony

汗 ,还有第二个字母,没看清。。不过原理一样的,map中key保存两个字母,就行了

修改后

#--encoding:utf-8--
def sortName(list):
#保存名字和第一个字母的map
nameMap ={}
#保存第一个字母并稍后进行排序
nameList =[]
for i in list:
len = i.find(' ')
str = i[0]
if(len > 0):
str = i[0]+i[len+1]
print str
nameMap[str] = i
nameList.append(str)
nameList.sort()
for i in nameList:
print(nameMap[i])

if __name__ == '__main__':
list = ['Michael jack','Michael cack','Michael zack','Bill Cliton','Tony']
sortName(list)
结果:
Bill Cliton
Michael cack
Michael jack
Michael zack
Tony
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雷神拌柠檬
2011-04-04 · 超过15用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:38.9万
展开全部
b=[ 'Bill Clinton','Michael Jackson','Tony Blair','Janet Jackson','Oprah Winfrey']
c=[i.split(' ') for i in b]
a=lambda x:(x[1][0],x[0][0])
c.sort(key=a)
for i in c:print(i[1],' ',i[0])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式