python 按照姓氏拼音排序 python姓名排序_字符串


有一串长的字符串 names="LI XIA ,ZHAO MING ,LAO WANG *,DA XIONG >,LI MEI MEI,CHANG JIANG,LI QIANG,ZHANG WU JI,ZHANG SAN FENG,DU GU QIU BAI,QIAO FENG"

要求:

1)过滤出所有的名字,去掉每个名字的左右空格和乱码,每个名字的首字母大写,比如 'LAO WANG *',处理成'Lao wang';

2)统计出所有名字里面名字最长的;

3)统计出姓的人的名单;

我先抛个砖,我的代码如下:

from pprint import pprint

def checkName(names):
    newnames = [name.title().strip(' *>') for name in names.split(',')]
    names_dict = {name: len(name) for name in newnames}
    result = sorted(names_dict.items(), key=lambda x: x[1], reverse=True)
    pprint(result)

if __name__ == '__main__':
    names = "LI XIA ,ZHAO MING ,LAO WANG *,DA XIONG >,LI MEI MEI,CHANG JIANG,LI QIANG,ZHANG WU JI,ZHANG SAN FENG,DU GU QIU BAI,QIAO FENG"
    checkName(names)


代码解析:

(1)pprint模块,提供了可以按照某个格式正确的显示Python已知类型数据的一种方法,这种格式可被解析器解析,又很易读。

Print()和pprint都是Python的打印模块,功能基本一样,区别是ppint模块打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。特别是对于特别长的数据打印,print()输出结果都在一行,不方便查看,而pprint采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint()打印方式。

(2)title()方法

该方法返回「标题化」的字符串,就是说所有单词都是以大写开始,其余字母均为小写。

语法:str.title()

(3)strip()方法

该方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列,注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

语法:str.strip([chars]),chars——移除字符串头尾指定的字符序列。

(4)split()方法

通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个字符串。

语法:str.split(str=“”,num=string.count(str))。str——分隔符,默认为所有的空字符,包括空格、换行(n)、制表符(t)等;num——分割次数。默认为-1,即分割所有。

(5)items()方法

以列表返回可遍历的(键、值)元组或数组。

语法:dict.items(),举例说明:


dict = {'Name': 'Runoob', 'Age': 7}
for i,j in dict.items():
    print(i, ":t", j)

Name :   Runoob
Age :   7


(6)key=lambda 元素:元素[字段索引]

比如,print(sorted(C,key=lambda x:x[1]))

x:x[1]字母可以随意修改,排序方式按照中括号[]里面的维度进行排序。[0]按照第一维排序,[1]按照第二维排序,[2]按照第三维排序。用实例具体说明一下。

取第一维


num = [(1,2.5), (1.5, 3.2), (1.3, 4.0), (2.2, 1.8)]
y,z = max(num, key=lambda x:x[0])
print(y, z)

2.2 1.8


取第二维


num = [(1,2.5), (1.5, 3.2), (1.3, 4.0), (2.2, 1.8)]
y,z = max(num, key=lambda x:x[1])
print(y, z)

1.3 4.0


取第三维


C = [('e', 4, 2), ('a', 2, 1), ('c', 5, 4), ('b', 3, 3), ('d', 1, 5)]
print(sorted(C, key=lambda x: x[2]))

[('a', 2, 1), ('e', 4, 2), ('b', 3, 3), ('c', 5, 4), ('d', 1, 5)]