Я новичок в python и испытываю трудности с преобразованием некоторых типов данных.У меня есть список объектов, которые имеют много атрибутов, и я хочу создать лучшую структуру для них.old_list
основан на типах 'Var', которые выглядят следующим образом:
old_type.name='a_1_1'
old_type.value=3.0
Количество индексов и тип значения могут измениться:
[old_type('a_1_1',4),old_type('a_1_2',2),old_type('x_1',True)]
Я бы хотелразбить старое имя на буквы и цифры и создать new_data_structure
, который будет выглядеть идеально так:
new_data_structure[0].letter = 'a'
new_data_structure[0].indices= [1,1]
new_data_structure[0].value = 4
new_data_structure[2].letter = 'x'
new_data_structure[2].indices= 1
new_data_structure[2].value = True
, и я трачу довольно много времени, но не могу заставить его работать.я попытался
new_list= [[old_type[i].name.split('_'), \
old_type[i].vartype.value] for i in range(len(old_type))]
, который создает странные глубокие списки (new_list[0][0][0]
для «а»), а также только с индексами.я пытался диктовать с помощью
new_dict = {'letter': old_type[i].name.split('_'), 'value',old_type[i].value for i in range(len(old_type))}
, но здесь for
, кажется, не зацикливается на ключевых словах, разделенных запятой, и вставка for
между каждой запятой тоже не работает.
Затем я попытался явно перебрать различные ключи
for i in range(len(old_type)):
new_dict[i][letter] = old_type[i].name.split('_')
new_dict[i][value] = old_type[i].value
, но каждый раз это перезаписывает и оставляет только последнюю букву и значение в new_dict.Я чувствую, что делаю так сложнее, чем должно быть.
Итого: есть ли способ преобразовать атрибуты списка объектов в диктет (список диктов?) С ключевыми словами в качестве указанных атрибутов?
Дополнительный вопрос: не существует личто-то вроде substr('_')
i Python, который может возвращать только строковую часть до первого '_'?
Спасибо