Python 3.x Python3:如果列表名是另一个列表中的元素,如何打印列表中的元素?

Python 3.x Python3:如果列表名是另一个列表中的元素,如何打印列表中的元素?,python-3.x,nested-lists,Python 3.x,Nested Lists,我是python的初学者,正在尝试编写一个脚本,将服务器的位置保存在一个列表中,然后用服务器名称填充一个以位置命名的单独列表。我不知道如何循环第一个列表中的数据,如何使用结果值循环第二个列表中的数据 该位置在服务器的FQDN中编码,并通过REGEX剥离 例如: locations=[“austx”、“chntx”、“santx”] austx=[“澳大利亚1号”、“澳大利亚2号”、“澳大利亚3号”] chntx=[“chn.1”、“chn.2”、“chn.3”] santx=[“sat.1”、“

我是python的初学者,正在尝试编写一个脚本,将服务器的位置保存在一个列表中,然后用服务器名称填充一个以位置命名的单独列表。我不知道如何循环第一个列表中的数据,如何使用结果值循环第二个列表中的数据

该位置在服务器的FQDN中编码,并通过REGEX剥离

例如:

locations=[“austx”、“chntx”、“santx”]
austx=[“澳大利亚1号”、“澳大利亚2号”、“澳大利亚3号”]
chntx=[“chn.1”、“chn.2”、“chn.3”]
santx=[“sat.1”、“sat.2”、“sat.3”]
对于位于以下位置的i:
印刷品(一)
上面的代码将获取我的位置。当austx是原始位置循环中的I值时,如何自动循环通过austx列表


我觉得这应该很简单,但我在这里遗漏了一些东西…

您实际上想要一个不同的数据结构。您可能需要的不是单独的列表,而是列表列表,因此您实际拥有的是:

locations = [["aus.1", "aus.2", "aus.3"],
             ["chn.1", "chn.2", "chn.3"],
             ["sat.1", "sat.2", "sat.3"]]
然后您可以像这样迭代:

for i in locations:
    for val in i:
        print(val)
否则,如果出于其他原因需要保留名称,则可以将字典中的其他列表与主列表分开:

locations = ["austx", "chntx", "santx"]
lists = {"austx": ["aus.1", "aus.2", "aus.3"],
         "chntx": ["chn.1", "chn.2", "chn.3"],
         "santx": ["sat.1", "sat.2", "sat.3"]}
然后向上看:

for i in locations:
    lst = lists[i]
    for val in lst:
        print(val)
这是一个很好的用途:

输出:

('austx', ['aus.1', 'aus.2', 'aus.3'])
('chntx', ['chn.1', 'chn.2', 'chn.3'])
('santx', ['sat.1', 'sat.2', 'sat.3'])

有时,两个数据类型之间的一对一关系表明有机会将它们压缩在一起。

使用以下代码创建所需的字典列表类型结构

dictionary.setdefault(位置[]).append(主机名)

该词典的结构如下:


dictionary={“austx”:[“aus.1”、“aus.2”、“aus.3”],“chntx”:[“chn.1”、“chn.2”、“chn.3”],“santx”:[“sat.1”、“sat.2”、“sat.3”]}

也许地图/字典会更方便些?我不想在回答中提到这一点,因为你不应该这么做,但你可以使用
locals()访问你的本地范围
。这允许您在locations:lst=locals()[i]中对i执行
。不幸的是,我无法像第一个示例中那样简化脚本,因为我需要位置数据与服务器数据分开。基本上,我需要收集服务器的位置,然后打印出一张表,其中列出了在哪个位置存在哪些服务器。第二个选项看起来像列表,是指向列表的字典。。。这正是我需要的!现在,我需要弄清楚如何将数据放入这种结构中……然后您应该使用第二个示例,并将列表放入字典中。如果您不知道如何执行此操作,则可能需要提出一个新问题并显示创建列表的代码。我的致命弱点似乎是,我需要以编程方式创建字典键,并以某种方式将其指向可以更新的列表。解决方案是这样做:locationdict.setdefault(location,[]).append(主机名)这将创建上面提到的第二个数据结构,并允许我继续。再次感谢您的帮助!这最初听起来是个不错的主意,但由于我的位置值是通过编程定义的(我很难在这里不维护列表),我相信如果不使用字典类型的结构,我就无法轻松地为位置定义列表。如果我错了,请纠正我,因为这是一个简单的方法来获得我需要的。
('austx', ['aus.1', 'aus.2', 'aus.3'])
('chntx', ['chn.1', 'chn.2', 'chn.3'])
('santx', ['sat.1', 'sat.2', 'sat.3'])