社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何将字符串转换为python中已经创建的变量/列表的名称?

OrangeCarrotJuice • 3 年前 • 1157 次点击  

基本上这是我问题的简化版本:

list1 = ["hi", "hello", "bye"]
list2 = ["x", "y", "z"]
variable = either "list1" or "list2"

所以我想打印变量当前的值,但由于它是一个字符串,如果打印它,它只会打印 "list1" "list2" .你如何打印正确的列表?是否有一些函数(我试图查找一个,但我完全困惑)可以将其转换为列表名?还是其他方式?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133491
 
1157 次点击  
文章 [ 3 ]  |  最新文章 3 年前
jarmod
Reply   •   1 楼
jarmod    3 年前

从键映射到值的最常见方法是使用字典。

例如:

variable = "list1"

list1 = ["hi", "hello", "bye"]
list2 = ["x", "y", "z"]

mapping = { "list1": list1, "list2": list2 }
print(mapping[variable])
Leo
Reply   •   2 楼
Leo    3 年前

尽量避免 eval .我相信在你的情况下,简单的切换是可以的:

def return_list(name, list1, list2):
  if name == "list1":
    return list1
  if name == "list2":
    return list2
  return None

print(return_list("list1", list1, list2))

@jarmod的解决方案看起来更好,但有一些小的改进:


listmap = {
 "list1": list1,
 "list2": list2
}

variable = "list2"
value = None
if variable in listmap.keys():
  value = listmap[variable]

print(value)

SorousH Bakhtiary
Reply   •   3 楼
SorousH Bakhtiary    3 年前

我想到了三个选择:

1-从你当前的范围(在模块级别, locals() globals() (同一本字典)

list1 = ["hi", "hello", "bye"]
print(locals()['list1'])

2-使用字典将字符串映射到实际对象:

list1 = ["hi", "hello", "bye"]
d = {'list1': list1}
print(d['list1'])

3.使用 eval (当输入来自其他地方时,不推荐使用。)

list1 = ["hi", "hello", "bye"]
print(eval("list1"))

我会和你一起去 第二 如果你问的话,解决方案。