【问题标题】:Handle dictionary based on one of the values根据其中一个值处理字典
【发布时间】:2023-01-20 01:35:50
【问题描述】:

我正在尝试为这个基本问题找到一个优雅的解决方案。我正在使用 webhook,我接收 json 形式的数据。

我必须根据其中一个值来处理数据。

import json

data = json.loads(raw_json)
data = {
  'type': 'A', # Type can be A, B or C
  'SomeAttribute' : 'SomeValue',
  'SomeOtherAttribute' : 'SomeOtherValue',
}

基于类型,我必须处理整个字典并根据类型执行一些操作。当然,我可以简单地定义一些函数并生成无限的 if 堆栈,但这看起来并不优雅。

if data['type'] == 'A':
    handle_type_A(data)
elif data['type'] == 'B':
    handle_type_B(data)
elif data['type'] == 'C':
    handle_type_C(data)
elif data['type'] == 'D':
    handle_type_D(data)
elif data['type'] == 'E':
    handle_type_E(data)

策略模式似乎是这样?我是初学者。

【问题讨论】:

  • 使用字典:handle = {'A': handle_type_A, 'B': handle_type_B, ...}。然后你可以做handle[data['type']](data)

标签: python python-3.x design-patterns


【解决方案1】:

我认为它应该是possibl如下:

data = {
  'type': 'A', # Type can be A or B
  'SomeAttribute' : 'SomeValue',
  'SomeOtherAttribute' : 'SomeOtherValue',
}

rule = {"A":hande_type_A, "B":handly_type_B}

rule[data["type"]](data)

您可以调整其他字母的代码

【讨论】:

    猜你喜欢
    • 2017-01-04
    • 1970-01-01
    • 2017-07-29
    • 2018-04-07
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    相关资源
    最近更新 更多