fluttershy174
@fluttershy174
Сисадмин и Фотограф

Как вывести все элементы списка из массива списков json в Python?

Добрый день! Прошу подсказать как правильно решить задачку.
Есть Json файл который я открываю с помощью Python
Файл содержит список списков в которых могут быть так же вложенны списки - все элементы списка это пары ключ и значение.
Например мне нужно найти список с id 10 и сохранить все его элементы в отдельный
Пример файла JSON
[
    {
        "id": 121,
        "type": "form_link",
        "name": "cust",
        "tooltip": "",
        "value": {
            "task_id": 432122,
            "task_ids": [
                1236733
            ],
            "subject": "test_event"
        }
    },
    {
        "id": 122,
        "type": "text",
        "name": "Регион",
        "tooltip": "",
        "value": "MGN."
    },
    {
        "id": 129,
        "type": "text",
        "name": "Проблема",
        "tooltip": "Заправьте картридж",
        "value": "TEST"
    },
    {
        "id": 10,
        "type": "person",
        "name": "Ответственный",
        "tooltip": "none",
        "value": {
            "id": 888,
            "first_name": "Pavel",
            "last_name": "Perkov",
            "email": "example@anime.com",
            "type": "user",
            "status": "WORKING",
            "web_session_settings": {
                "disable": false
            },
            "mobile_session_settings": {
                "disable": false
            }
        }
    }
]


Например мне нужно найти список в котором "id" : 10
и сохранить все его значения (включая его под-списки) в новый словарь
"type": "person",
        "name": "Ответственный",
        "tooltip": "none",
        "value": {
            "id": 888,
            "first_name": "Pavel",
            "last_name": "Perkov",}
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
Пример файла JSON

Это не json, а python список.
Например мне нужно найти список с id 10 и сохранить все его элементы в отдельный

Т.к. мысля закончилась, предположу, что отдельный - это "отдельный переменная":
list_data

list_data = [
    {
        "id": 121,
        "type": "form_link",
        "name": "cust",
        "tooltip": "",
        "value": {
            "task_id": 432122,
            "task_ids": [
                1236733
            ],
            "subject": "test_event"
        }
    },
    {
        "id": 122,
        "type": "text",
        "name": "Регион",
        "tooltip": "",
        "value": "MGN."
    },
    {
        "id": 129,
        "type": "text",
        "name": "Проблема",
        "tooltip": "Заправьте картридж",
        "value": "TEST"
    },
    {
        "id": 10,
        "type": "person",
        "name": "Ответственный",
        "tooltip": "none",
        "value": {
            "id": 888,
            "first_name": "Pavel",
            "last_name": "Perkov",
            "email": "example@anime.com",
            "type": "user",
            "status": "WORKING",
            "web_session_settings": {
                "disable": False
            },
            "mobile_session_settings": {
                "disable": False
            }
        }
    }
]


# mega function
def test(data, target_id):
    for item in data:
        if item.get('id') == target_id:
            return item
    return None

res = test(list_data, 10)
print(res)

# {'id': 10, 'type': 'person', 'name': 'Ответственный', 'tooltip': 'none', 'value': {'id': 888, 'first_name': 'Pavel', 'last_name': 'Perkov', 'email': 'example@anime.com', 'type': 'user', 'status': 'WORKING', 'web_session_settings': {'disable': False}, 'mobile_session_settings': {'disable': False}}}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
1. Перестаём путать списки и словари, чтобы не сбивать с толку ни себя, ни советчиков.
2. Пишем функцию, которая проверяет один элемент внешнего списка на предмет "подходит-не подходит", и возвращает True если он подходит.
3. Грузим JSON с помощью модуля json.
4. Используем list(filter(...)), чтобы получить отфильтрованный список элементов, указав функцию из п.2 в качестве функции фильтра.
5. Если нужны дополнительные операции, то перебираем полученный список, для каждого элемента выполняем нужное тебе действие.
6. Сохраняем итог в файл с помощью всё того же модуля json, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы