通过对象值集的置换生成JSON配置文件

我正在尝试为我的程序创建一组JSON配置文件。我通常将JSON文件传递到命令行并运行仿真。问题是我想探索很多参数,并且想为每组参数创建一个配置文件。例如,如果我的配置文件如下所示:

{
    "A": x,"B": "Green","C": {
        "c_a": "O2","c_b": y
        }
    }
}

我想遍历每个键的一组值,例如x = [1,2,3]y = [5,6,7]。我想要一个解决方案,用户可以在顶部定义所有参数,而JSONnet可以在不同文件中生成所有组合。

我对JSONnet有点熟悉,我知道我可以使用函数,并且基本上为每个键传递不同的值,并具有一个新的json文件。但这不是很可扩展,并且我的配置文件是嵌套的,这使得一切都变得更加复杂,而且,这种方法并不能真正解决参数的排列。

我已经通过使用外壳脚本解决了这个问题,该脚本生成了一个排列表,然后将每一行作为输入传递给jsonnet,但我认为应该有更好的方法。

编辑:如果有一种使用JSONnet Python绑定实现此目的的方法,也可以。

y4853592 回答:通过对象值集的置换生成JSON配置文件

您的意思是:

import json
import itertools

params_info = {
    "x": [ 1,2,3],"y": [ "a","b","c"],"z": [ "A","B","C"],}

for param_vals in itertools.product(*params_info.values()):
    params = dict(zip(params_info.keys(),param_vals))
    data = {
      "A": params["x"],"B": "Green","C": {
        "c_a": "O2","c_b": params["y"],"c_c": ["D","E","F",params["z"]]
      }
    }
    jsonstr = json.dumps(data) # use json.dump if you want to dump to a file
    print(jsonstr)
    # add code here to do something with json
本文链接:https://www.f2er.com/3167293.html

大家都在问