Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python转换为Groovy嵌套的JSON_Python_Json_Dictionary_Groovy - Fatal编程技术网

将Python转换为Groovy嵌套的JSON

将Python转换为Groovy嵌套的JSON,python,json,dictionary,groovy,Python,Json,Dictionary,Groovy,我正在使用Nextflow实现工作流。Nextflow使用groovy作为基础语言,然后每个进程都可以独立使用任何编程语言。我本质上是一个Python程序员,所以我写的代码是用Python编写的。我在转换语言方面有点困难 数据={ “a”:“a”, “b”:“b”, “c”:{ “somename”:{ “z”:“z”, “y”:“y”, “参数”:{ “最低”:“3000”, “忽略”:“60”, “最大值”:“2500”, “最大值”:“500” } }, “somename2”:{ “z”

我正在使用Nextflow实现工作流。Nextflow使用groovy作为基础语言,然后每个进程都可以独立使用任何编程语言。我本质上是一个Python程序员,所以我写的代码是用Python编写的。我在转换语言方面有点困难

数据={
“a”:“a”,
“b”:“b”,
“c”:{
“somename”:{
“z”:“z”,
“y”:“y”,
“参数”:{
“最低”:“3000”,
“忽略”:“60”,
“最大值”:“2500”,
“最大值”:“500”
}
},
“somename2”:{
“z”:“z”,
“y”:“y”,
“参数”:{
“最低”:“3000”,
“忽略”:“60”,
“最大值”:“2500”,
“最大值”:“500”
}
}
}
}
CNS参数列表=[]
我的字典={}
对于数据[“c”]中的每一项:
对于k,数据[“c”][each].get('params',{}.items()中的v:
CNS参数列表扩展([k,str(v)])
我的目录[每个]=CNS参数列表
打印(我的字典)
基本上,我有一个JSON(数据),我需要从一些嵌套字段创建一个字典。上述代码的输出为:

{'somename': ['minimum', '3000', 'ignore', '60', 'maximum_A', '2500', 'maximum_B', '500', 'minimum', '3000', 'ignore', '60', 'maximum_A', '2500', 'maximum_B', '500'], 'somename2': ['minimum', '3000', 'ignore', '60', 'maximum_A', '2500', 'maximum_B', '500', 'minimum', '3000', 'ignore', '60', 'maximum_A', '2500', 'maximum_B', '500']}
简单地说,将
somename
somename2
作为键,并将
params
作为值


有哪位groovy程序员能在我能做到的百分之一的时间内破解这个问题?我相信还有一些方法可以使这段代码更高效,欢迎任何想法

我猜你只是拼错了每个somename的重复键

groovy中的第一个区别是如何声明映射(python中的字典)

有关groovy集合的更多信息,您可以在此处找到:

您的案例代码:

def data = [
    "a" : "A",
    "b" : "B",
    "c" : [
        "somename":[
            "z" : "Z",
            "y" : "Y",
            "params" :[
                "minimum": "3000",
                "ignore": "60",
                "maximum_A": "2500",
                "maximum_B": "500"
            ]
        ],

        "somename2":[
            "z" : "Z",
            "y" : "Y",
            "params" :[
                "minimum": "3000",
                "ignore": "60",
                "maximum_A": "2500",
                "maximum_B": "500"
            ]
        ]
    ]
]
def my_dict = data.c.collectEntries{k,v-> [k,v.params]  }

println my_dict
//if you want to print it as json:
println groovy.json.JsonOutput.toJson(my_dict)
我正在地图对象上使用方法

您可以在GDK文档中找到其他用于映射的方法:只需谷歌


groovy Map一扩展java Map,就检查javadoc中的主要方法:

比什么更有效?请提供您尝试过的Groovy代码,以便我们对其进行改进。谢谢您,先生,简洁高效!
def data = [
    "a" : "A",
    "b" : "B",
    "c" : [
        "somename":[
            "z" : "Z",
            "y" : "Y",
            "params" :[
                "minimum": "3000",
                "ignore": "60",
                "maximum_A": "2500",
                "maximum_B": "500"
            ]
        ],

        "somename2":[
            "z" : "Z",
            "y" : "Y",
            "params" :[
                "minimum": "3000",
                "ignore": "60",
                "maximum_A": "2500",
                "maximum_B": "500"
            ]
        ]
    ]
]
def my_dict = data.c.collectEntries{k,v-> [k,v.params]  }

println my_dict
//if you want to print it as json:
println groovy.json.JsonOutput.toJson(my_dict)