@zasara

Как удалить символ из словаря?

Не получается удалить символ "_" из словаря
Словарь (mas), переделанный в json (для наглядности) выглядит так:
[
    {
        "code": 200,
        "data": [
            {
                "key1": "AL_AS",
                "key2": "10",
            }
        ]
    },
    {
        "code": 200,
        "data": [
            {
                "key1": "AR_FD",
                "key2": "4",
            }
        ]
    }
]


Я пробую через следующий код:
newmas = [{re.sub(r'_', '', k): re.sub(r'_', '', v) for k, v in mas}]

Но так он выдает лишь [{'code': 'data'}]

Подскажите пожалуйста, как углубиться в 'data' и там удалять символ?
  • Вопрос задан
  • 303 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Включить голову и выучить уже стандартные структуры данных Питона.
Вот кроме шуток
Для начала, у тебя не словарь, а список словарей с разнообразными структурами данных внутри.
А твой код пытается работать с этой структурой, как будто это список строк. Вот с чего ты взял, что это вообще сработает? Да ещё и используя регулярные выражения. Взял, что первой строкой в гугле попалось?


Теперь скажи, в контексте вышесказанного - что значит "удалить символ подчеркивания"? Удалить откуда?
Я предполагаю, что из значений в словарях внутри списка в ключе data для каждого словаря в твоем списке?
Ну вот собственно эту фразу достаточно перевести на питон (от конца к началу), чтобы получить ответ.
# этот код изменит твой массив "на месте", а не создаст изменённую копию!
for mas_item in mas: # для каждого словаря в твоем списке
    for data_dict in mas_item['data']: # для каждого словаря в списке по ключу data 
        # словари не любят, когда их модифицируют и проходятся по ним for'ом одновременно
        data_dict_keys = list(data_dict.keys()) # так что заранее составляем список ключей словаря
        for key in data_dict_keys: # проходимся по этим ключам
            data_dict[key] = data_dict[key].replace('_', '') # и обрабатываем значения по этим ключам

Как-то так. Чем тебе это подчеркивание помешало, без понятия.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы