我有一个列表的列表,像这样:打印出一个列表的元素在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]?
我有一个列表的列表,像这样:打印出一个列表的元素在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]?
听起来像是你要使用OrderedDict
:
from collections import OrderedDict
dlists = OrderedDict([('a', [1,2,3]), ('b', [2,3,4]), ('c', [3,4,5])])
print dlists.keys()[0]
您可以查找的范围找到的名称与您正在寻找的对象相关联。
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())
但是,如果你知道自己在做什么,就去做吧。
最好的选择似乎是使用字典。
a = [1,2,3]
b = [2,3,4]
c = [3,4,5]
data = {'a':a,'b':b,'c':c}
如果我想打印出第一个列表的名字,我可以这样做:
data.keys()[0]
'a'
如果您需要的名单有一个名字,你需要找到另一种方式来做到这一点,就像使用一个字典或者继承'list'一样。你不会把'a'放入列表中,而是将对象'a'放在列表中。 – agf 2014-10-29 08:20:22
你为什么想这样做? – GingerPlusPlus 2014-10-29 08:21:25
该列表中没有“名称”。你有一个变量指向同一个对象,变量有一个名字。理论上可以通过'globals'或'locals'找到这个变量,如果它在相同的范围内,但你应该永远不要这样做。如果您需要附加到该列表的名称,请使用字典。 – l4mpi 2014-10-29 08:22:23