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

如何在Python中将列表中的字符串转换为类的存储变量?

解决Python列表中字符串转类实例的问题

看起来你现在的核心需求是:把frnd_User_列表里的字符串(比如大小写字母)替换成对应的User_类实例,而不是单纯存字符串标识对吧?我来帮你调整代码实现这个目标:

修改后的完整代码

import networkx as nx
import string
import random

class User_():
    def __init__(self, id_):
        self.id_ = id_
        self.G = nx.DiGraph()
        self.frnd_User_ = []  # 初始化空的好友实例列表
        self.edge_User_ = []

# 1. 先建立所有用户ID到User_实例的映射字典
# 包含所有小写(女性)和大写(男性)字母用户
all_user_ids = list(string.ascii_lowercase) + list(string.ascii_uppercase)
user_map = {user_id: User_(user_id) for user_id in all_user_ids}

# 2. 为每个用户生成好友实例并构建关系
for current_user in user_map.values():
    # 随机生成好友数量(原逻辑的seed)
    friend_count_seed = random.randint(0, 26)
    friend_instances = []
    
    for _ in range(friend_count_seed):
        # 随机选男性用户实例(从映射字典中取)
        male_id = random.choice(list(string.ascii_uppercase))
        friend_instances.append(user_map[male_id])
        # 随机选女性用户实例
        female_id = random.choice(list(string.ascii_lowercase))
        friend_instances.append(user_map[female_id])
    
    # 把好友实例赋值给当前用户的属性
    current_user.frnd_User_ = friend_instances
    
    # 生成边并添加到用户的有向图中
    current_user.edge_User_ = [(current_user.id_, frnd.id_) for frnd in friend_instances]
    current_user.G.add_edges_from(current_user.edge_User_)

关键改动说明

  • 提前构建实例映射:用user_map字典把每个用户ID(字母)和对应的User_实例绑定,这样后续可以直接通过ID快速获取到对应的类实例,而不是存字符串。
  • 替换字符串为实例:原代码中直接把字母字符串添加到frnd_User_,现在改成从user_map中取出对应的User_对象添加,这样列表里存储的就是类的实例,满足你的需求。
  • 补全图边逻辑:原代码里self.ed...没写完,这里补充了把边添加到用户的有向图G中的逻辑,保证功能完整。

可选优化:动态创建实例

如果不需要预先生成所有用户(比如有些用户可能永远不会被作为好友选中),可以用动态创建的方式,避免生成不必要的实例:

user_map = {}

def get_or_create_user(user_id):
    """获取已有用户实例,不存在则创建"""
    if user_id not in user_map:
        user_map[user_id] = User_(user_id)
    return user_map[user_id]

# 在生成好友时使用这个函数
for current_user in user_map.values():
    friend_count_seed = random.randint(0, 26)
    friend_instances = []
    
    for _ in range(friend_count_seed):
        male_user = get_or_create_user(random.choice(list(string.ascii_uppercase)))
        friend_instances.append(male_user)
        female_user = get_or_create_user(random.choice(list(string.ascii_lowercase)))
        friend_instances.append(female_user)
    
    current_user.frnd_User_ = friend_instances
    # 后续边的逻辑和上面一致

这样只有当某个用户被选中为好友时,才会创建对应的实例,节省资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:29:49