2014-10-29 50 views
-4

我有一个列表的列表,像这样:打印出一个列表的元素在Python

a = [1,2,3] 
b = [2,3,4] 
c = [3,4,5] 
lists = [a,b,c] 

我想在“名单”,打印出的第一个元素的名称,像这样:

print lists[0] 
a 

但当然Python不喜欢这个工作,做:

print lists[0] 
[1,2,3] 

我怎样才能打印出列表的名称[0]不打印合作名单[0]?

+5

如果您需要的名单有一个名字,你需要找到另一种方式来做到这一点,就像使用一个字典或者继承'list'一样。你不会把'a'放入列表中,而是将对象'a'放在列表中。 – agf 2014-10-29 08:20:22

+0

你为什么想这样做? – GingerPlusPlus 2014-10-29 08:21:25

+2

该列表中没有“名称”。你有一个变量指向同一个对象,变量有一个名字。理论上可以通过'globals'或'locals'找到这个变量,如果它在相同的范围内,但你应该永远不要这样做。如果您需要附加到该列表的名称,请使用字典。 – l4mpi 2014-10-29 08:22:23

回答

2

听起来像是你要使用OrderedDict

from collections import OrderedDict 
dlists = OrderedDict([('a', [1,2,3]), ('b', [2,3,4]), ('c', [3,4,5])]) 
print dlists.keys()[0] 
1

您可以查找的范围找到的名称与您正在寻找的对象相关联。

def namesOf(x, scope=globals()): 
    r = [] 
    for name, value in scope.iteritems(): 
    if value is x: 
     r.append(name) 
    return r 


a = [1,2,3] 
b = [2,3,4] 
c = [3,4,5] 

lists = [a,b,c] 


print namesOf(lists[0], locals()) 

但是,如果你知道自己在做什么,就去做吧。

0

最好的选择似乎是使用字典。

a = [1,2,3] 
b = [2,3,4] 
c = [3,4,5] 
data = {'a':a,'b':b,'c':c} 

如果我想打印出第一个列表的名字,我可以这样做:

data.keys()[0] 
'a'