【问题标题】:Modifying JSON Dictionaries by deleting Python通过删除 Python 修改 JSON 字典
【发布时间】:2021-08-23 01:19:33
【问题描述】:

我正在尝试编写一段代码,在其中过滤掉 Json 文件中的值 RSI, MOM, MOM_RSI 并按 Status 过滤。我想摆脱具有ACTIVEStatus 的值,并摆脱状态为PAUSED 的值。我怎样才能做到这一点?

代码:

def reading(): 
    with open('data.json') as f:
        data = json.load(f)
    return data
reading()

预期输出:

{
    "RSI": [
      {
        "TradingPair": "BTCUSD",
        "Status": "ACTIVE",
      }
    ],
    "MOM_RSI":[
        {
            "TradingPair": "BTCUSDT",
            "Status": "ACTIVE",
        }
    ]
}

JSON 文件:

{
    "RSI": [
      {
        "TradingPair": "BTCUSD",
        "Status": "ACTIVE",
      }
    ],
    "MOM":[
        {
            "TradingPair": "BCHUSDT",
            "Status": "PAUSED",
        }
    ],
    "MOM_RSI":[
        {
            "TradingPair": "BTCUSDT",
            "Status": "ACTIVE",
        }
    ]
}

【问题讨论】:

    标签: json python-3.x function dictionary format


    【解决方案1】:

    读取数据。你也可以使用你的函数

    >>> with open('data.json') as f:
            data = json.load(f)
    

    创建一个名为 result 的字典。

    >>> result = {}
    

    然后,检查数据的键,检查其中的每个字典 过滤后的列表,如果状态为'ACTIVE',则如果该键已存在于result 中,则追加到result[filter_key],或者为此过滤键创建一个键。

    >>> for filter_key in data.keys():
            for d in data[filter_key]:
                if d['Status'] == 'ACTIVE':
                    try:
                        result[filter_key].append(d)
                    except KeyError:
                        result[filter_key] = [d]
    >>> result
    {'RSI': [{'TradingPair': 'BTCUSD', 'Status': 'ACTIVE'}],
     'MOM_RSI': [{'TradingPair': 'BTCUSDT', 'Status': 'ACTIVE'}]}
    

    【讨论】:

    • 有没有办法让 ['RSI', 'MOM', 'MOM_RSI'] 模块化,以便它自动调整到长度,而不是按原样说明列表。
    • 当然。编辑了我的帖子。
    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2012-03-11
    • 2022-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多