Как сгруппировать элементы списка на основе перехода их типов? ⇐ Python
-
Anonymous
Как сгруппировать элементы списка на основе перехода их типов?
Мой ввод — список:
данные = [ -1, 0, 'а', 'б', 1, 2, 3, 'с', 6, 'д', 'е', .4, .5, 'а', 'б', 4, 'ф', 'г', ] Я пытаюсь сформировать группы (словарь), где ключами являются строки, а значениями — числа, следующие за ними.
Однако мне следует учитывать две детали:
[*]Список данных, которые я получаю, иногда может содержать некоторые ведущие нестроковые значения, которые следует игнорировать. [*]Количество строк варьируется, но минимум — 1.
Для всего этого я написал код ниже:
start = list(map(type, data)).index(str) хотел = {} для меня в данных[start:]: строки = [] если тип(i) == строка: strings.append(я) числа = [] еще: числа.append(я) хотел['/'.join(strings)] = числа Это дает мне почти то, что я ищу:
распечатать(требуется) # {'a/b': [1, 2, 3, 4], 'c': [6], 'd/e': [0.4, 0.5], 'f/g': []} Можете ли вы показать мне, ребята, как исправить мой код?
Мой ожидаемый результат таков:
{'a/c': [1, 2, 3], 'b': [6], 'c/d': [0,4, 0,5], 'e/f': []}
Мой ввод — список:
данные = [ -1, 0, 'а', 'б', 1, 2, 3, 'с', 6, 'д', 'е', .4, .5, 'а', 'б', 4, 'ф', 'г', ] Я пытаюсь сформировать группы (словарь), где ключами являются строки, а значениями — числа, следующие за ними.
Однако мне следует учитывать две детали:
[*]Список данных, которые я получаю, иногда может содержать некоторые ведущие нестроковые значения, которые следует игнорировать. [*]Количество строк варьируется, но минимум — 1.
Для всего этого я написал код ниже:
start = list(map(type, data)).index(str) хотел = {} для меня в данных[start:]: строки = [] если тип(i) == строка: strings.append(я) числа = [] еще: числа.append(я) хотел['/'.join(strings)] = числа Это дает мне почти то, что я ищу:
распечатать(требуется) # {'a/b': [1, 2, 3, 4], 'c': [6], 'd/e': [0.4, 0.5], 'f/g': []} Можете ли вы показать мне, ребята, как исправить мой код?
Мой ожидаемый результат таков:
{'a/c': [1, 2, 3], 'b': [6], 'c/d': [0,4, 0,5], 'e/f': []}