Py学习  »  Python

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

OrangeCarrotJuice • 2 年前 • 482 次点击  

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

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

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

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

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

例如:

variable = "list1"

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

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

尽量避免 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    2 年前

我想到了三个选择:

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"))

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