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

如何通过字符串动态指向列表变量并更新其值?

问题描述

我需要更新多个命名如下的列表:

ACL = []
ANL = []
APL = []
# 还有50+类似列表

同时我有一个存储这些列表名称字符串的数组:

CHOICES = [ 'ACL', 'ANL', 'APL' ]

目前我从数据库查询数据,当获取到对应列表的结果时更新该列表,查询和追加数据本身无问题,但需逐个处理每个列表。我希望遍历CHOICES,动态更新对应的列表。

当前实现方式(逐个处理):

acl_filtered_data = [{"results" : "result"} for j in qs if j.choice == 'ANL']
ACL.append(acl_filtered_data)

其余列表也采用同样方式处理。

我希望通过循环遍历所有CHOICES,将过滤后的数据追加到对应的列表中:

for i in CHOICES:
    filtered_data = [{"results" : "result"} for j in qs if j.choice == i]
    # 此处需动态指向对应列表并追加数据,不知如何实现
解决方案

方法一:使用字典存储列表(推荐)

把所有列表统一放到一个字典里,用列表名称作为key,这样可以直接通过key动态访问对应的列表,代码更清晰且易维护:

# 初始化字典,包含所有需要的列表
lists_dict = {
    'ACL': [],
    'ANL': [],
    'APL': [],
    # 其他50+列表依次添加
}

CHOICES = ['ACL', 'ANL', 'APL']

# 遍历CHOICES动态更新
for choice in CHOICES:
    filtered_data = [{"results": "result"} for j in qs if j.choice == choice]
    lists_dict[choice].append(filtered_data)

# 之后访问列表直接用lists_dict['ACL']即可

如果需要保持原有的变量名(比如ACL、ANL),可以在初始化字典后额外赋值:

ACL = lists_dict['ACL']
ANL = lists_dict['ANL']
APL = lists_dict['APL']

这样后续既可以用字典操作,也可以直接用原变量名访问。

方法二:使用globals()或locals()(不推荐)

如果你必须保留原有的独立变量,也可以通过全局/局部变量字典来动态访问,但这种方式不够直观,且容易引发意外问题(比如误修改其他变量):

ACL = []
ANL = []
APL = []
CHOICES = ['ACL', 'ANL', 'APL']

for choice in CHOICES:
    filtered_data = [{"results": "result"} for j in qs if j.choice == choice]
    # 用globals()获取全局变量字典,通过key找到对应列表并追加
    globals()[choice].append(filtered_data)

注意:如果这些列表是在函数内部定义的局部变量,需要用locals()代替globals(),但局部变量字典的修改行为在不同Python版本中可能有差异,因此更推荐第一种字典的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:18:21