TypeError: можно только конкатенировать список (не "str"), но я включил проверки типов - PullRequest
0 голосов
/ 13 февраля 2020

, поэтому я создаю gui, который принимает три различных файла CSV, объединяет, сравнивает и ищет их для заданных значений и полей. У меня интересная проблема, которую я просто не могу понять. Расположенный там, где это происходит, больше не повезло. Эта функция вызывается позже в коде в другом func def policy_match (policy, var):

json_sort = json.loads(policy)
resource_holder = []
for info in json_sort["Statement"]:
    for key, value in info.items():
        if(key == "Resource"):
            if(type(value) is list):
                resource_holder.extend(value)
            elif(type(value) is str):
                resource_holder = resource_holder + (value)
for resource in resource_holder:
    if var in resource:
        has_resource = True
        break
return has_resource

ошибка происходит в elif l oop в строке resource_holder = держатель ресурса + значение возвращает TypeError: может объединить список (не "str") в список. Есть идеи?

1 Ответ

0 голосов
/ 13 февраля 2020

Оператор + перегружен и представляет конкатенацию списка, когда один из операндов является списком. Как говорится в ошибке, если другой операнд не является списком, вы не можете объединить его. Вместо этого вы должны использовать метод append. Замените resource_holder = resource_holder + (value) на resource_holder.append(value), и оно должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...