Преобразование данных из таблицы в словарь

помогите пожалуйста со следующей проблемой.

Данные из таблицы отображаются в Python в виде списка списков:

[
    ['S1', 'G1', 'T1', 'N', 'TN1'],
    ['S1', 'G1', 'T1', 'P', 'TP1'],
    ['S1', 'G2', 'T2', 'N', 'TN2'],
    ['S1', 'G2', 'T2', 'P', 'TP2'],
    ['S2', 'G3', 'T3', 'N', 'TN3'],
    ['S2', 'G3', 'T3', 'P', 'TP3']
]

Мне нужно, преобразовать список список в словарь такого типа:

{
    'S1': {
        'G1': {
            'T': 'T1',
            'P': 'TP1',
            'N': 'TN1'
        },
        'G2': {
            'T': 'T2',
            'P': 'TP2',
            'N': 'TN2'
        },
    },
    'S2': {
        'G3': {
            'T': 'T3',
            'P': 'TP3',
            'N': 'TN3'
        }
    }
}

Как это сделать? Заранее спасибо


Ответы (1 шт):

Автор решения: Zhihar
data = [
    ['S1', 'G1', 'T1', 'N', 'TN1'],
    ['S1', 'G1', 'T1', 'P', 'TP1'],
    ['S1', 'G2', 'T2', 'N', 'TN2'],
    ['S1', 'G2', 'T2', 'P', 'TP2'],
    ['S2', 'G3', 'T3', 'N', 'TN3'],
    ['S2', 'G3', 'T3', 'P', 'TP3']
]

res = dict()

for obj in data:
    if obj[0] not in res:
        res[obj[0]] = dict()

    if obj[1] not in res[obj[0]]:
        res[obj[0]][obj[1]] = dict()

    res[obj[0]][obj[1]]['T'] = obj[4]
    res[obj[0]][obj[1]][obj[3]] = obj[4]

print(res)

Но c T непонятно как быть, например если будут такие данные:

['S1', 'G1', 'T1', 'N', 'TN1'],
['S1', 'G1', 'T2', 'N', 'TN2'],
→ Ссылка