3 回答

TA贡献1830条经验 获得超3个赞
你想的太复杂了。
for svc in data['services']:
print(svc['name'], svc['routing']['port'])
完毕。
一般观察:您似乎坚持循环索引。别。Python 循环没有索引是一件好事。
每当你想写作时
for thing in range(len(some_list)):
停下来写
for thing in some_list:
反而。

TA贡献1884条经验 获得超4个赞
这是我们可以用来克服这个订单同步问题的方法:
首先,GitHub 存储库中的目录顺序默认是按字母顺序排列的,因此如果我们对 JSON 对象中的服务数组进行排序,我们将能够为两个源获得相同的索引。甚至确保我们可以按字母顺序对这两个来源进行排序。
这是代码:首先将 JSON 对象的 services 数组排序为:
data['services'] = sorted(data["services"], key=lambda d: d["name"])
通过考虑问题中的示例,它将为我们提供:
services = [
{"nodeservice": {
"A": "B"
}
},
{"pyservice":{
"X": "Y"
}
}
]
然后我们将对 GitHub 存储库中的目录列表进行排序,如下所示:
Repo.clone_from(data['repo_url'], out_dir)
list_dir = os.listdir(out_dir)
print(list_dir)
services = []
for svc in range(0, len(data['services'])):
services.append(list_dir[svc])
services.sort()
print(services)
它会给我们:['nodeservice', 'pyservice']根据上面问题中的例子。
因此,在这两种情况下,我们都有第nodeservice一个pyservice, 表示相同的顺序。
添加回答
举报