【京東】(數據分析工程師-筆試)姓名排序【Python】

【京東】(數據分析工程師-筆試)姓名排序【Python】

題目描述

馬上就開學了,教務處的老師拿到了新生的名單,現在他需要根據考生的姓名錄入一個拼音版的新名單。

老師錄入時,需要輸入姓和名(例如:ZHANG SAN,字母均爲大寫,姓名以空格隔開),並且要將這些人按一定規則排序。

排序方式如下:
首先,按照該形式出現的次數排序,即:姓出現次數多的人先排序
其次,若兩個人的姓出現的次數一樣多(或者是同一個姓),按照原名單的順序。

輸入

輸入包括多行,每一行兩個字符串,代表一個人的姓和名。

輸出

輸出排序後的名單

樣例輸入

ZHANG SAN
LI SI
WANG WU
WANG LIU
WANG QI
ZHANG WU
LI WU

樣例輸出

WANG WU
WANG LIU
WANG QI
ZHANG SAN
ZHANG WU
LI SI
LI WU

使用字典統計姓氏並排序

# 姓名排序
# 輸入
stopword = ''
str = []
i = input()
while i != stopword:
    str.append(i)
    i = input()
# print (str)

# 提取姓氏
for j in range(len(str)):
    str[j]=str[j].split()
# print (str)
str2 = []
for j in range(len(str)):
    str2.append(str[j])

# 以字典形式統計姓氏
dict = {}
for j in range(len(str)):
    if str[j][0] not in dict:
        dict[str[j][0]] = 1
    else:
        dict[str[j][0]] += 1

# print (len(dict))

# 姓氏排序
str3 = []
for k in sorted(dict,key=dict.__getitem__,reverse=True):
    str3.append(k)

# 排序
str4 = []
for a in str3:
    for j in range(len(str)):
        if str[j][0] == a:
            str4.append(str[j][:])

# print(str4)

# 輸出
for j in range (len(str)):
    for a in range(2):
        print(str4[j][a],end=' ')
    print('')

'''
ZHANG SAN
LI SI
WANG WU
WANG LIU
WANG QI
ZHANG WU
LI WU
'''

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章