2013-11-17 2 views
3

У меня есть список, который включает в себя:Преобразование списка в словарь

list = [(Year, 'make', 'model')] 

Использование Python, можно преобразовать его в Словаре, где год является ключевым:

dict = {Year : {'Make' : [models]}} 

пример:

{ 
2013:{ 
'Scion' : ['FR-S,' 'tC'], 
'Subaru' : ['BRZ'], 
'Toyota' : ['Land Cruiser', 'Venza'], 
} 
2012:{ 
'Scion' : ['FR-S,' 'tC'], 
'Subaru' : ['BRZ'], 
'Toyota' : ['Venza'], 

} 

}

+1

Да, я считаю, что это возможно. У вас есть конкретный вопрос относительно процесса? Если нет, вы всегда можете вернуться, если вы застряли. –

+2

вы можете дать нам вход? –

+0

@FelixKling да, я застрял. Я пытался со вчерашнего дня придумать решение этой проблемы, но я не могу, любая помощь приветствуется. – Midimo

ответ

3
>>> values = [('Year', 'make', 'model')] 
>>> result = {} 
>>> for lst in values: 
...  leaf = result 
...  for path in lst[:-2]: 
...  leaf = leaf.setdefault(path, {}) 
...  leaf.setdefault(lst[-2], list()).append(lst[-1]) 
... 
>>> result 
{'Year': {'make': ['model']}} 
+0

спасибо, это работает так, как я хотел, я ценю вашу помощь – Midimo

3

Не уверен, если правильный ответ уже был размещен, но это то, что я придумал:

list = [(2012, 'make', 'model'),(2012, 'make', 'model2'),(2013, 'make', 'model')] 

D = dict() 
for li in list: 
    if li[0] not in D: 
     D[li[0]] = { li[1]: [li[2]] } 
    elif li[1] not in D[li[0]]: 
     D[li[0]][li[1]] = li[2] 
    else: 
     D[li[0]][li[1]].append(li[2]) 

print (D) 
3

Трюк, чтобы получить инициализацию defaultdict правильных. Остальная часть кода становится очень простой.

from collections import defaultdict 

D = defaultdict(lambda: defaultdict(list)) 

for year, make, model in the_list: 
     D[year][make].append(model) 

print(D) 
1

Да, это, это ДИКТ внутри Dict. Вы хотите, чтобы ваш dict был

cardict = {year1:{make1:[model1,model2...],...},...} 

, где ваши точки - это другие годы, модели и модели. Я не уверен, как вы хотите вводить его, хотите ли вы автоматическую систему ввода или парсер или что, но вопрос требует, чтобы внутри внутри dict содержался список внутри dict, и это так.

Если у вас есть более конкретные вопросы, разместите свой код, и вы получите помощь.

Редактировать: Я думаю, что встроенный словарь python должен быть достаточным; Я действительно не думаю, что вам нужно импортировать любые словари.

Смежные вопросы