繁体   English   中英

循环浏览多维列表,并从Python中的元素创建一个单独的json对象

[英]loop over a multi-dimensional list and create a separate json object from elements in Python

我有一个数据列表:

data = [['domain', '600', '10.0.0.1'],['domain2', '600', '10.0.0.2'],['domain3', '200', '10.0.0.3']]

我想获取此数据并使用它来创建json格式的terraform文件,如下所示:

{
 "resource": 
     { "aws_route53_record": {
         "recordname": {
              "zone_id": "",
              "name": data[0][0],  # --> takes 'domain' from the data list and inputs it here
              "type": data[0][1], # --> takes '600' etc
              "ttl": data[0][2]
               # rest of code
            }

       }

 }

我需要创建许多这样的对象,但是每个对象的字符串将保持不变。

作为参考,并让更多的例子感,请参阅Terraform JSON语法指南这里并通过创建一个Terraform记录route53的指导,可以发现这里

从列表中的第一个索引创建了第一个JSON对象后,接下来我将要移至data[1][x]

我仍然是Python的初学者,所以我希望这是足够的信息

就像一个测试,我尝试了这个:

for item in data:
   print(item[0])

打印:

['domain', '600', '10.0.0.1']
['domain2', '600', '10.0.0.2']

如您所料。 但是我失败的地方是我是否执行以下操作来打印每个ttl值(索引1)

for item in data:
    print(item[1])

它将打印ttl数字列表,但会出现indexError: list item out of range

'600'
'600'
'200'
Traceback (most recent call last):
 File "<stdin>", line 2, in <module>
IndexError: list index out of range

如果我尝试print(item[2])它会立即出错。

因为我得到了这些indexErrors,所以我被困在如何访问每个索引中的正确信息上

尝试遍历数据并检查每个项目是否至少具有所需数量的元素。

像这样:

result = []
for item in data:
    dict = {
     "resource": 
         { "aws_route53_record": {
             "recordname": {
                  "zone_id": "",
                  "name": item[0] if len(item) > 0 else "",  # --> takes 'domain' from the data list and inputs it here
                  "type": item[1] if len(item) > 1 else "", # --> takes '600' etc
                  "ttl": item[2] if len(item) > 2 else ""
                   # rest of code
                }

           }

     }
     result.append(dict)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM