[英]print index name in python
我想知道如何在列表和子列表中输出每个索引(和子索引)的名称而不是值。
例如,假设我有一个主列表,其中有3个其他列表,每个列表包含5个子列表。 这是一个小例子来澄清:
List1 = [SubList1, SubList2, SubList3, SubList4, SubList5]
List2 = [Apple, Banana, Orange, Pear, Grape]
List3 = [Red, Yellow, Orange, Green, Purple]
Lists = [List1, List2, List3]
MainList = [Lists]
如何打印出“List1”?
当我输入
MainList[0][0]
它输出
[SubList1, SubList2, ..., Sublist5]
我想要索引的实际名称,而不是它的值。
我考虑过使用字典键,但是我用于XML转换的报表生成器将所有数据输出到列表中。 这是否意味着我别无选择,只能修改报表生成器脚本以将数据输出到词典中?
尝试使用dict()
来实现此目的:
List1 = ['SubList1', 'SubList2', 'SubList3', 'SubList4', 'SubList5']
List2 = ['Apple', 'Banana', 'Orange', 'Pear', 'Grape']
List3 = ['Red', 'Yellow', 'Orange', 'Green', 'Purple']
xd = {'List1': List1, 'List2': List2, 'List3': List3}
print xd['List1']
for k, v in xd.iteritems():
if v == List1:
print k
>>> ['SubList1', 'SubList2', 'SubList3', 'SubList4', 'SubList5']
>>> List1
你好像误解了。 示例中的List1是变量名称。 它不存储在Lists数组中,只存储其值。 因此,您不会从列表中获取List1。 数组索引是整数,列表中List1的索引是0.正如另一位评论者建议您可能希望将列表结构转换为字典。
Lists = {} Lists['List1'] = [SubList1, SubList2, SubList3, SubList4, SubList5] Lists['List2'] = [Apple, Banana, Orange, Pear, Grape] Lists['List3'] = [Red, Yellow, Orange, Green, Purple] print(Lists.keys())
list对象没有名称属性,你应该使用pandas.Series如下:
import pandas as pds
List1 = pds.Series([SubList1, SubList2, SubList3, SubList4, SubList5],name='List1')
List2 = pds.Series([Apple, Banana, Orange, Pear, Grape],name='List2')
你找到这样的名字:
print List1.name,List2.name
列表列表成为pandas.DataFrame:
Lists = pds.DataFrame([List1, List2, List3])
要回答您的问题,请按以下步骤操作:
- 每个子列表成为一个系列
Sublist = pds.Series([...],name='Sublist')
- 每个列表成为一个数据帧:
List = pds.DataFrame([Sublist1,Sublist2,..])
- “the”列表成为一个词典:
Lists = {'List1' : List1,
'List2' : List2,
...
}
你得到的名字:
for name_list,list in Lists.items():
name_list,list.columns
快速解决方案
class NamedList(list):
__slots__ = ['__name__'] # optimisation, can be ommited
def __init__(self, name, *args):
super().__init__(*args)
self.__name__ = name
def __repr__(self):
return "%s(%r, %s)" % (type(self).__name__, self.__name__, super().__repr__())
test = NamedList('test', [1, 2, 3])
print(test)
print(test.__name__)
输出:
NamedList('test', [1, 2, 3])
test
如果您的列表始终存储为变量,则可以使用某种标识dict检索其名称(遗憾的是标准库中没有):
names = IdentityWeakKeyDict((obj, name for name, obj in locals().items()))
names
现在应该将对象映射到它们的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.