京东数据分析第一题姓名排序没做出来,刚写的一个。

import sys
lines = sys.stdin.readlines()
name = []
xing_count = {}
for line in lines:
    mingzi = line.strip().split()
    if xing_count.get(mingzi[0]) == None:
        xing_count[mingzi[0]] = 0
    xing_count[mingzi[0]] = 1
    name.append(mingzi)
sorted_xing_count = dict(sorted(xing_count.items(),key=lambda x:x[1],reverse=True))

v_k = {}
for key,value in sorted_xing_count.items():
    if v_k.get(value)== None:
        v_k[value] = []
    v_k[value].append(key)
result = []
for value in v_k.values():
    for na in name:
        if na[0] in value:
            result.append(' '.join(na))
print('\n'.join(result))
#京东##笔试题目##数据分析师##实习#
全部评论
思路是,按姓出现次数排序,得到排序字典,如{'wang':3,'zhang':2,'li':2},再形成次数对姓的字典v_k,如{3:['wang'],2:['zhang','li']},最后两层for循环,遍历每个名字和每个v_k的value,如果姓出现在value中就取出来。
点赞 回复 分享
发布于 2019-08-24 23:38
得到排序字典后直接name进行稳定排序,排序的时候对比姓出现的次数大小
点赞 回复 分享
发布于 2019-08-25 00:35

相关推荐

评论
2
16
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务