добавление ключа для словарей в массиве

zaivanza

Новичок
Пользователь
Дек 28, 2021
28
1
3
Мне нужно добавить ключ для словарей массива.
Вот массив ex:
Python:
[
    {
        "data": [
            {
                "side": "sell",
                "price": "1690",
                "quantity": "8"
            },
            {
                "side": "buy",
                "price": "3990",
                "quantity": "20"
            },
            {
                "side": "sell",
                "price": "790",
                "quantity": "2"
            }
        ]
    },
    {
        "data": [
            {
                "side": "buy",
                "price": "990",
                "quantity": "15"
            },
            {
                "side": "sell",
                "price": "1990",
                "quantity": "12"
            }
        ]
    }
]

Я создаю новый массив, и мне нужно добавить в него ключи buy и sell. Вот код, который берет все что нужно из массива и передает в новый массив:
Python:
newmas = []
for item in ex:
    result = []

    for items in item['data']:
        if items['side'] == 'sell':
            result.append({'price': items['price'], 'quantity': items['quantity']})
        else:
            result.append({'price': items['price'], 'quantity': items['quantity']})

    newmas.append(result)

Надо, чтобы было так:

Python:
[
    [
        'sell': [
            {
            "side": "sell",
            "price": "1690",
            "quantity": "8"
            },
            {
            "side": "sell",
            "price": "790",
            "quantity": "2"
            }
        ]
        'buy': [
            {
            "side": "buy",
            "price": "3990",
            "quantity": "20"
            }
        ]
    ],
    [
        'sell': [
            {
            "side": "sell",
            "price": "1990",
            "quantity": "12"
            }
        ]
        'buy': [
            {
            "side": "buy",
            "price": "990",
            "quantity": "15"
            }
        ]
    ]
]

То есть если side = sell, значит этот словарь перемещается в раздел sell, тоже самое с buy
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 650
472
83
Надо, чтобы было так:
вы показали не словарь, это список, где есть ключи как в словаре, так не будет работать...


upd
наверное я понял что вам нужно...

можно так
Python:
ex = [
    {
        "data": [
            {
                "side": "sell",
                "price": "1690",
                "quantity": "8"
            },
            {
                "side": "buy",
                "price": "3990",
                "quantity": "20"
            },
            {
                "side": "sell",
                "price": "790",
                "quantity": "2"
            }
        ]
    },
    {
        "data": [
            {
                "side": "buy",
                "price": "990",
                "quantity": "15"
            },
            {
                "side": "sell",
                "price": "1990",
                "quantity": "12"
            }
        ]
    }
]

dct = [
    {
        "sell": [],
        "buy": []
    },
    {
        "sell": [],
        "buy": []
    }
]


for index, value in enumerate(ex):
    for items in value['data']:
        if index == 0:
            if items['side'] == 'sell':
                dct[0]["sell"].append(items)
            else:
                dct[0]["buy"].append(items)
        elif index == 1:
            if items['side'] == 'sell':
                dct[1]["sell"].append(items)
            else:
                dct[1]["buy"].append(items)
print(dct)

в итоге получается то, что вы показали, за исключением того, что там словари а не списки, как у вас
 
Последнее редактирование:

Форум IT Специалистов