Предмет: Информатика, автор: gantonilyn656

a = ['first', 1, 2, 3, 'second', 10, 20, 'third', 15, 56, 70, 'fourth', -50]
my_dict = {}
current_str = None
for e in a
if type(e) == 'str'
my_dict[e] = []
current_str = e
else
my_dict[current_str].append(e)

print(my_dict)
Я не могу понять что не так, но выдаёт ошибку:
Traceback (most recent call last):
File (путь до проекта), line 9, in
my_dict[current_str]. append(e)
KeyError: None
(на языке python)


Grey0808: Что сделать надо?
Grey0808: Не до конца прочитал, соре
Grey0808: Это сортировка на строки и числа?
quswadress: Вот тут ошибка: if type(e) == 'str'. type возвращает type а не str. Так что правильно будет if type(e) == str.

Ответы

Автор ответа: Grey0808
2

В пятой строчке:

if type(e) == 'str':

Надо заменить 'str' на str, т.е. убрать кавычки

Или можете использовать

if isinstance(e, str):


KnowsUser1: и isinstance будет предпочтительнее. тип type в python весьма хитрый и сравнение через оператор "==" иногда может приводить к весьма прикольным результатам.
Автор ответа: KnowsUser1
1

Ответ:

строка 4: требуется ":"

Строка 5: type([object]) возвращает объект типа type, не str. Воспользуйтесь функцией isinstance(object, classinfo), где object - объект, требующий проверки типа, а classinfo - класс или кортеж классов.

[Справка]

isinstance(e, str) вернёт true, если e является str или false в ином случае

isinstance(e, (int, float, complex)) вернёт true, если e является int, float или complex и false в ином случае

строка 9: значение ключа dict не может быть None.

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