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

如何将社交网络关系TXT文件转换为Python字典?

问题分析与解决方案

你的代码存在几个关键问题,导致无法得到预期结果:

  • 错误使用了分隔符:文件里的好友关系是用空格分隔的,但你用了split('-', '>'),完全不符合文件格式
  • 未处理第一行的数字20(这是总关系数,不需要加入字典)
  • 没考虑到只有单个名字的行(比如Lena、Rafael,这类人没有好友)
  • 字典值应该用列表存储:一个人可能有多个好友,直接赋值会覆盖之前的记录

正确代码实现

with open('nw_data1.txt', 'r') as f:
    lines = f.readlines()
    file_dict = {}

    # 跳过第一行的数字行
    for line in lines[1:]:
        # 去除首尾空白,按任意空格分割成元素(处理多个空格的情况)
        parts = line.strip().split()
        if not parts:
            continue  # 跳过空行
        
        name = parts[0]
        # 初始化列表(如果名字不在字典里)
        if name not in file_dict:
            file_dict[name] = []
        
        # 如果有好友,添加到列表
        if len(parts) >= 2:
            friend = parts[1]
            file_dict[name].append(friend)

# 打印结果,格式为 名字 -> 好友1, 好友2
for name, friends in file_dict.items():
    if friends:
        print(f"{name} -> {', '.join(friends)}")
    else:
        print(f"{name} -> 无好友")

代码说明

  1. 跳过第一行:lines[1:]直接从第二行开始处理,忽略第一行的数字
  2. 处理多空格分割:split()默认按任意数量的空格、制表符分割,解决了行里多个空格的问题
  3. 列表存储好友:每个名字对应一个列表,确保多个好友不会被覆盖
  4. 处理无好友的情况:单个名字的行,对应字典里的空列表,打印时标注“无好友”

运行后你会得到预期的格式,比如:

Robert -> Jack, Gary, Nick
Lizzie -> Dave
Lena -> 无好友
Mia -> Dave, Caroline
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:50:16