Я пытаюсь разбить 2D-массив на определенный формат и не могу понять последний шаг. Пример моих данных структурирован следующим образом:
# Original Data
fileListCode = [['Seq3.xls', 'B08524_057'],
['Seq3.xls', 'B08524_053'],
['Seq3.xls', 'B08524_054'],
['Seq98.xls', 'B25034_001'],
['Seq98.xls', 'D25034_002'],
['Seq98.xls', 'B25034_003']]
Я пытаюсь разделить его так, чтобы он выглядел так:
# split into [['Seq3.xls', {'B08524_057':1,'B08524_053':2, 'B08524_054':3},
# ['Seq98.xls',{'B25034_001':1,'D25034_002':2, 'B25034_003':3}]
Ключи словаря 1,2,3 основаны на исходной позиции записи, начиная с первого раза, когда появляется имя файла. Для этого я сначала создал массив для получения всех уникальных имен файлов (все, что .xls
- это имя файла)
tmpFileList = []
tmpCodeList = []
arrayListDict = []
# store unique filelist in a tempprary array:
for i in range( len(fileListCode)):
if fileListCode[i][0] not in tmpFileList:
tmpFileList.append( fileListCode[i][0] )
Однако я борюсь со следующим шагом. Я не могу найти хороший способ извлечь кодовые имена (например, B08524_052
) и преобразовать их в словарь с индексом, основанным на их позиции.
# make array to store filelist, and codes with dictionary values
for i in range( len(tmpFileList)):
arrayListDict.append([tmpFileList[i], {}])
Этот код просто производит [['Seq3.xls', {}], ['Seq98.xls', {}]]
; Я не уверен, должен ли я сначала создать структуру, а затем попытаться добавить код и значения словаря, или есть лучший способ.
-
РЕДАКТИРОВАТЬ: я только что сделал образец немного более ясным, изменив значения в fileListCode