繁体   English   中英

将字典作为参数传递给 function

[英]Passing dictionary as parameter to a function

因此,我正在开发一个项目,其中用户在 json 文件中提供输入,解析器从 json 文件中读取数据,然后创建一个数据结构,该结构将更新为数据文件中提到的输入。

我的 json 文件(input_file.json5)如下所示:

     {
        "clock_frequency": 25000,
        "Triggering_Mode": "positive_edge_triggered",
        "Mode": "Offline",
        "overshoot": 0.05,
        "duty_cycle": 0.5,
        "amplitude/high_level": 1,
        "offset/low_level": 0
     }

数据结构(data_struc.py)如下所示:

Parameters={
    "Global_parameters": {
        "frequency": 3000,
        "Triggering_Mode": "positive_edge_triggered"
    },
    "Executor_param": {
        "Mode": "Offline"
    },
    "Waveform_Settings": {
        "overshoot": 0.05,
        "duty_cycle": 0.5,
        "amplitude/high_level": 1,
        "offset/low_level": 0,
    }
}

解析器的代码是:

import json5
from data_struc import Parameters

class Parser(object):

    def read_input_file(self, path_name, file_name):
         input_file = open(path_name + file_name + '.json5')
         data = json5.load(input_file)
         print(Parameters['Global_parameters'])
         parameters = self.parse_parameters(data)
         input_file.close()
         return parameters

   def parser_parameters(self, data):
         parameter = {
               "Global_parameters": {
                                        "frequency": data[clock_frequency]
                                        "Triggering_Mode": data[Triggering_Mode]
                                    }
                     }
         return parameter

我想将数据作为参数传递给 function,我想使用数据的值(作为字典传递)更新数据结构的内容到 function。 如何实现 function parser_parameters?

这是 map 的单行代码,如果您可以更改架构,则将数据转换为架构,您也可以只使用 go 并获取密钥,而不是创建要匹配的项目列表。 这会根据匹配的键将数据格式化为模式:

编辑:将“数据”标签添加到架构和 output 用于嵌套列表数据

schema = {
    'Global_parameters': [
        'clock_frequency', # I noticed you had this as just 'clock' in your desired outuput
        'Triggering_Mode'
    ],
    'Executor_param': [
        'Mode'
    ],
    'Waveform_Settings': [
        'overshoot',
        'duty_cycle',
        'amplitude/high_level',
        'offset/low_level'
    ],
    'Data': {
        'Packet'
    }
}

data = {
    "clock_frequency": 25000,
    "Triggering_Mode": "positive_edge_triggered",
    "Mode": "Offline",
    "overshoot": 0.05,
    "duty_cycle": 0.5,
    "amplitude/high_level": 1,
    "offset/low_level": 0,
    "Packet": [
        {"time_index":0.1, "data":0x110},
        {"time_index":1.21, "data":123},
        {"time_index":2.0, "data": 0x45}
    ]
}

# "one line" nested dict comprehension
data_structured = {k0: {k1: v1 for k1, v1 in data.items() if k1 in v0} # in v0.keys() if you are using the structure you have above
                   for k0, v0 in schema.items()}

import json
print(json.dumps(data_structured, indent=4)) # pretty print in json format

Output:

{
    "Global_parameters": {
        "clock_frequency": 25000,
        "Triggering_Mode": "positive_edge_triggered"
    },
    "Executor_param": {
        "Mode": "Offline"
    },
    "Waveform_Settings": {
        "overshoot": 0.05,
        "duty_cycle": 0.5,
        "amplitude/high_level": 1,
        "offset/low_level": 0
    },
    "Data": {
        "Packet": [
            {
                "time_index": 0.1,
                "data": 272
            },
            {
                "time_index": 1.21,
                "data": 123
            },
            {
                "time_index": 2.0,
                "data": 69
            }
        ]
    }
}

暂无
暂无

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

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