请教如何用python按字母顺序排序英文名字但是不可以用sort函数

Python010

请教如何用python按字母顺序排序英文名字但是不可以用sort函数,第1张

刚才试了一下,字符串是可以直接比较的,但是要区分大小写

'a'<'b'

'a'>'B'

所以首先都变成小写吧。

然后

sorted_string=reduce(lambda

x,y:x>y

and

y+x

or

x+y,lowered_string

)

这样会失去原字符串的大小写。

如果想保留大小写,

让他们等效,恐怕需要专门定义一个函数来比较,

一个lambda搞不定。

------------------

看错了,是排序英文名,也是同样的方法,把每个名字第一字符拿出来比较就行了。

#--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