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