这不是一张单子,我不知道该怎么问
我有一个变量列表,每个变量都是一个列表,我试图从列表中获取变量
>>> print sortedList
['group0', 'group1', 'group2', 'group3', 'group4', 'group5', 'group6', 'group7', 'group8', 'group9', 'group10', 'group11', 'group12']
>>> print group0
['abc']
>>> print group2
['combine', 'id']
我的循环不能实现我想要的
for group in sortedList:
for job in group:
print job
g
r
o
u
p
0
....
组列表的数量各不相同,所以除了得到它们的列表之外,我不知道迭代它们的好方法
我就是这样分类的:
group_re = re.compile('(group)(\d+)', re.I)
totalVars = vars().keys()
myList = [ s for s in totalVars if group_re.match(s)]
sortedList = sorted(myList, key=lambda x: (len (x), x))
问题是您试图使用字符串“group0”、“group1”等的列表访问变量group0、group1等。。你需要把这些字符串映射到列表。做这件事的常用方法是格式化你的组列表,而不是作为变量,而是作为dict条目
下面是一个工作示例:
repl.it链接:http://repl.it/eT1
在您的示例中,您在解释器的本地名称空间中定义了变量,并且希望通过另一个列表中的名称进行引用。您可以使用
locals()
函数来实现这一点,如下所示:如果这些变量是在模块级别定义的,那么应该改用
globals()[group]
根据您更新的信息,变量位于
dependencies_groups
命名空间中,但由于您已from dependencies_groups import *
,因此它们也位于模块的全局变量中,应作为globals()[group]
引用。您还可以使用不同的功能从另一个模块获取它们:有些人认为最后一种方法更可取,因为它更清楚群体来自何处
相关问题 更多 >
编程相关推荐