'str' object has no attribute 'keys'

zaivanza

Новичок
Пользователь
Дек 28, 2021
28
1
3
Есть массив mas, из всех ключей key2 нужно удалить символ "-"

Код:
[
    {
        "code": "213",
        "data": {
            "key1": 1,
            "key2": "TA-MA"
        }
    },
    {
        "code": "213131",
        "data": {
            "key1": 2,
            "key2": "RA-DA"
        }
    }
]

Попробовал так, но выдает ошибку:

Код:
for mas_item in mas:
    for data_dict in mas_item['data']:
        data_dict_keys = list(data_dict.keys())
        for key in data_dict_keys:
            data_dict['key2'] = data_dict['key2'].replace('-', '')

Ошибка:
Код:
data_dict_keys = list(data_dict.keys())
AttributeError: 'str' object has no attribute 'keys'
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Есть массив mas, из всех ключей key2 нужно удалить символ "-"
Вот пример:
Python:
mas = [
    {
        "code": "213",
        "data": {
            "key1": 1,
            "key2": "TA-MA"
        }
    },
    {
        "code": "213131",
        "data": {
            "key1": 2,
            "key2": "RA-DA"
        }
    }
]


def replace_elems(x, key, s1, s2):
    if isinstance(x, list):
        for i in x:
            replace_elems(i, key, s1, s2)
    elif isinstance(x, dict):
        if x.get(key):
            x[key] = x[key].replace(s1, s2)
        for k, v in x.items():
            if isinstance(v, (dict, list)):
                replace_elems(v, key, s1, s2)


replace_elems(mas, 'key2', '-', '')
print(mas)
 
  • Мне нравится
Реакции: zaivanza

zaivanza

Новичок
Пользователь
Дек 28, 2021
28
1
3
Вот пример:
Python:
mas = [
    {
        "code": "213",
        "data": {
            "key1": 1,
            "key2": "TA-MA"
        }
    },
    {
        "code": "213131",
        "data": {
            "key1": 2,
            "key2": "RA-DA"
        }
    }
]


def replace_elems(x, key, s1, s2):
    if isinstance(x, list):
        for i in x:
            replace_elems(i, key, s1, s2)
    elif isinstance(x, dict):
        if x.get(key):
            x[key] = x[key].replace(s1, s2)
        for k, v in x.items():
            if isinstance(v, (dict, list)):
                replace_elems(v, key, s1, s2)


replace_elems(mas, 'key2', '-', '')
print(mas)
спасибо, помогло
 

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