最流行的明星

问题描述

用户参与明星点赞活动,用户可以为多个用户点赞,每次点赞产生一行流水,

请根据流水文件写出程序找出,点赞最多的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")

 输出

猜你喜欢

转载自blog.csdn.net/weixin_42702666/article/details/88372057