#json #python-3.x #function #dictionary #format
Вопрос:
Я пытаюсь написать фрагмент кода, в котором он отфильтровывает значения RSI, MOM, MOM_RSI
в файле Json и фильтрует по Status
. Я хочу избавиться от ценностей, которые имеют Status
ACTIVE
значение «о», и избавиться от тех, которые имеют статус «о 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",
}
]
}
Ответ №1:
Прочитайте данные. Вы тоже можете использовать свою функцию
>>> with open('data.json') as f:
data = json.load(f)
Создайте словарь с именем результат.
>>> result = {}
Затем просмотрите ключи данных, просмотрите каждый словарь в этом
отфильтрованном списке, если статус есть 'ACTIVE'
, затем либо добавьте result[filter_key]
, если ключ уже существует result
, либо создайте ключ для этого ключа фильтра.
>>> 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'}]}
Комментарии:
1. Есть ли способ, которым я мог бы сделать
['RSI', 'MOM', 'MOM_RSI']
модульный, чтобы он автоматически корректировался по длине, а не указывал список как есть.2. Конечно. Отредактировал мой пост.