2013-06-04 21 views
5

ho molte liste in questo formato:Creare dizionario dalla lista python

['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''] 
['2', 'AP', '', '', '', '35.0000', '105.0000', '', ''] 
['3', 'EU', '', '', '', '47.0000', '8.0000', '', ''] 

Ho bisogno di creare un dizionario con chiave come primo elemento nella lista e valore come l'intero elenco. Nessuna delle chiavi si sta ripetendo. Qual è il modo migliore per farlo?

risposta

5

mettere tutte le liste in un'altra lista e fare questo:

my_dict = {} 
for list in lists: 
    my_dict[list[0]] = list[:] 

Questo ottiene fondamentalmente il primo elemento e lo mette come una chiave nella my_dict e mettere nella lista come valore.

7
>>> lists = [['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''], 
['2', 'AP', '', '', '', '35.0000', '105.0000', '', ''], 
['3', 'EU', '', '', '', '47.0000', '8.0000', '', '']] 
>>> {x[0]: x for x in lists} 
{'1': ['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''], '3': ['3', 'EU', '', '', '', '47.0000', '8.0000', '', ''], '2': ['2', 'AP', '', '', '', '35.0000', '105.0000', '', '']} 
+0

grazie mille :) Ho davvero aiutato –

+0

Ma cosa farei se dovessi creare un dizionario separato per ogni elenco e non voglio unire le liste? –

+0

@wannabe_geek devi mantenere le tue liste in qualche modo. metterli tutti in una lista è il modo più semplice. puoi usare altre cose come la lista collegata, se vuoi. l'output segue la stessa regola. Devi tenerlo da qualche parte. Il dizionario è la scelta migliore. – AliBZ

0

Se gli indici sono interi sequenziali, è possibile utilizzare un elenco invece di un dict:

lst = [None]+[x[1:] for x in sorted(lists)] 

usarlo solo se davvero adatta al vostro problema, però.

Problemi correlati