簡體   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