问题描述
实现思路
代码思路:
- 1). 统计每个姓出现的次数;
eg: {'WANG': 3, 'ZHANG': 2, 'LI': 2}
- 2). 通过sorted排序, 排序的key值是姓出现的次数;
范例代码
"""
代码思路:
1). 统计每个姓出现的次数; eg: {'WANG': 3, 'ZHANG': 2, 'LI': 2}
2). 通过sorted排序, 排序的key值是姓出现的次数;
"""
from collections import Counter
names = ['ZHANG SAN', 'LI SI', 'WANG WU', 'WANG LIU', 'WANG QI', 'ZHANG WU', 'LI WU' ]
def get_count(name):
# 存储所有用户姓的列表. ['ZHANG', 'LI', 'WANG', 'WANG', 'WANG', 'ZHANG', 'LI']
first_names = [name.split()[0] for name in names]
# 解析用户排序传入的姓, 依次是: 'ZHANG', 'LI', 'WANG', 'WANG'......
first_name = name.split()[0]
# 统计每个姓出现的次数<此处可以用原生的python代码实现>; eg: {'WANG': 3, 'ZHANG': 2, 'LI': 2}
counters = Counter(first_names)
# 返回用户排序传入的姓出现的次数;
return counters.get(first_name)
if __name__ == '__main__':
# sorted: 根据指定的key值对所有可迭代的对象进行排序操作。
# reverse:序规则,reverse = True 降序, reverse = False 升序(默认)。
results = sorted(names, key=lambda x: get_count(x), reverse=True)
# 输出结果
for result in results:
print(result)