[英]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.