2012-01-01 120 views
0

我在问这个问题,但用python 2.7代替。我知道我是这个问题的提问者,但答案应该不同。这是链接。如何在不用Python创建数组的情况下创建变量名?

How to make a variable name without creating an array in C++?

我抬头数据结构的蟒蛇网站上,但我不知道他们在说什么。任何帮助或指导表示赞赏!

+3

像你的其他文章中,我发现这个不清楚,你说的是一个关联数组类型,例如[字典](HTTP数据结构://docs.python .ORG /教程/ datastructures.html#词典)? – 2012-01-01 01:05:36

+0

这就像我可以参考的唯一ID,以创建无限制实例并自动检查所有实例。 – Ripspace 2012-01-01 01:08:19

回答

3

如果您正在寻找在C++类似std::map的结构,你应该使用dict。它是一个字典,可以将任何可哈希对象作为键(一个字符串,一个元组,一个整数)。例如:

x = dict() 
x['a'] = 5 
x[6] = MyObject() 

正如你可以看到这是不是std::map更强大,因为钥匙可能有不同的类型和值了。

如果要指定一个类,你也可以这样做:

class MyClass: 
    pass 

x[1] = MyClass 

但也许你有兴趣在这个类的一个实例?这也是可能的(在同一dict):

x[1] = MyClass() # this creates an instance 
+0

您可能有我正在寻找的答案,但还有一件事。假设我有一个类被分配给x [1],我可以这样做:x [1] .var = 1,还是有不同的方式来做到这一点? – Ripspace 2012-01-01 01:16:12

+0

请检查我的编辑。 – gruszczy 2012-01-01 01:18:01

+0

我更感兴趣实例化一个类。谢谢! – Ripspace 2012-01-01 01:26:03

-6

你可以做类似如下:

globals()['foo'] = 10 

locals()['foo'] = 10 

然后你就可以在此之后通过其名称访问FOO。从你的其他问题来看,似乎你问如何在不使用方括号的情况下创建一个数组(在Python中,通常是一个列表)。

与C/C++,你并不需要声明一个Python变量的类型,那么你可以这样做:

foo = [] 

foo = list() 

其中变量命名为“富'用列表(如数组)类型引用一个值。

+4

没有。只是在python的这么多层次上这是错误的。你永远不会玩当地人或全球。 – 2012-01-01 01:20:39

1

一般来说,您正在查找的数据结构是一个键值映射。根据语言或库的不同,这个结构的名字可能是以下内容:字典,散列表,关联数组,散列。这些是通用名称。

在python中,它们被称为字典。并用{}创建。而Python中的列表将使用[]创建。

一个基本的例子是这样的:

a={} 
a[5]='a' 
a[3]=0 
print a 
Output: {3: 0, 5: 'a'} 
相关问题