问题描述
用户参与明星点赞活动,用户可以为多个用户点赞,每次点赞产生一行流水,
请根据流水文件写出程序找出,点赞最多的N个用户,以及被点赞最多的明星ID。
流水文件中每条记录的格式为:userid,starId
userid: string用户的账号
starId: string明星ID
流水文件
思路
先读取文件,将用户与明星分别存到两个列表中,然后统计出现次数最多的明星和用户
代码
# -*- coding: utf-8 -*-
"""
Created on Sun Mar 10 12:26:32 2019
@author: Administrator
"""
def max_list(lt): #统计列表中出现次数最多的元素
temp=0
for i in lt:
if lt.count(i)>temp:
max_lt=i
temp=lt.count(i)
return max_lt,lt.count(max_lt)
def Lt2Dic(lt,n):
d={}
for i in lt:
d[i]=lt.count(i)
sort_d=sorted(d.items(),key = lambda d:d[1],reverse=True) #按值的大小从大到小排序
L=sort_d[:n] #取出前n个点赞次数多的,返回列表
d1={} #将列表转换为字典
for j in L:
d1[j[0]]=j[1]
return d1
def GetTopStarUser(filename):
User=[]
Star=[]
f=open(filename)
lines=f.readlines()
for line in lines:
line=line.rstrip("\n") #去掉每一行的‘\n’
u,s=line.split(',')
User.append(u)
Star.append(s)
max_User=Lt2Dic(User,3)
max_Star,max_Snum=max_list(Star)
print("点赞最多的前三个用户是和点赞次数分别为",max_User)
print("获得点赞最高的明星是",max_Star,"获得的点赞次数为",max_Snum)
GetTopStarUser("C:\\Users\\Administrator\\Desktop\\1.txt")
输出