You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

统计文件每行用户关注人数并返回最大值的技术实现求助

解决用户关注人数统计问题

你的现有代码只是把文件里所有单词拆分后统计总数减一,完全没有实现「逐行统计每个用户关注人数」的核心逻辑。我们来一步步修改代码,实现你的需求:

需求回顾

  • 测试文件followst.txt内容(按行划分,每行第一个是用户,后续是该用户关注的对象):
andrew fred
fred judy
andrew fred george
judy andrew john
george
  • 目标:统计每个用户的关注人数,返回关注人数最多的用户(若你给出的示例返回george judy是需求表述偏差,比如实际要统计被关注次数/粉丝数,我也会在后面补充对应实现)

关注人数统计的正确代码

# 初始化字典,存储每个用户的累计关注人数
follow_counts = {}

# 用with语句打开文件,自动处理资源释放
with open('followst.txt', 'r') as fhand:
    for line in fhand:
        # 去除每行首尾空白,拆分单词列表
        words = line.strip().split()
        if not words:  # 跳过空行
            continue
        # 第一个单词是用户,剩下的数量就是该行的关注人数
        user = words[0]
        current_follow = len(words) - 1
        # 更新字典:用户已存在则累加,不存在则初始化
        if user in follow_counts:
            follow_counts[user] += current_follow
        else:
            follow_counts[user] = current_follow

# 找出最大的关注人数值
max_count = max(follow_counts.values()) if follow_counts else 0
# 筛选出所有达到最大关注数的用户
top_users = [user for user, count in follow_counts.items() if count == max_count]

# 用空格连接结果并输出
print(' '.join(top_users))

代码逻辑解释

  1. 字典存储数据:用follow_counts字典记录每个用户的总关注人数,键是用户名,值是累计关注数,方便快速查找和更新。
  2. 逐行处理文件:通过for line in fhand逐行读取,确保每个用户的关注列表被正确划分,不会混在一起。
  3. 计算单用户关注数:拆分每行单词后,第一个元素是用户,剩余元素的数量就是该用户当前行的关注人数,累加到总数值里。
  4. 筛选Top用户:先找到最大的关注人数,再把所有达到这个数值的用户筛选出来,最后用空格连接输出。

针对示例返回的调整(统计粉丝数)

如果你的示例返回george judy是因为实际需求是统计每个用户的被关注次数(粉丝数),可以用这段代码实现:

# 初始化字典存储粉丝数
fan_counts = {}

with open('followst.txt', 'r') as fhand:
    for line in fhand:
        words = line.strip().split()
        if len(words) < 2:  # 没有关注对象的行直接跳过
            continue
        # 遍历当前用户关注的所有对象,给他们的粉丝数加1
        for followed_user in words[1:]:
            if followed_user in fan_counts:
                fan_counts[followed_user] += 1
            else:
                fan_counts[followed_user] = 1

# 找出粉丝数最多的用户
max_fans = max(fan_counts.values()) if fan_counts else 0
top_users = [user for user, count in fan_counts.items() if count == max_fans]

print(' '.join(top_users))

比如当你的followst.txt内容为:

andrew fred
fred judy
andrew george
judy george
george judy

运行这段代码就会返回george judy,因为两人的粉丝数均为2,是最多的。

内容的提问来源于stack exchange,提问作者Soshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:40:02