2013-06-04 19 views
5

Mam wiele list w formacie:Tworzenie słownika z listy python

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

muszę utworzyć słownik z kluczem jako pierwszy element na liście, a jako wartość całej listy. Żaden z klawiszy się nie powtórzy. Jaki jest najlepszy sposób na zrobienie tego?

Odpowiedz

5

umieścić wszystkie swoje listy w innej listy i to zrobić:

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

Zasadniczo dostaje pierwszy element i umieszcza go jako klucz w my_dict i umieścić na liście jako wartość.

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

dziękuję bardzo :) Naprawdę pomógł –

+0

Ale co bym zrobił, gdybym potrzebował stworzyć osobny słownik dla każdej listy i nie chcę scalać list? –

+0

@wannabe_geek musisz zachować swoje listy w jakiś sposób. umieszczenie ich wszystkich na jednej liście jest najprostszym sposobem. możesz użyć innych rzeczy, takich jak lista linków, jeśli chcesz. twój wynik jest zgodny z tą samą regułą. Musisz go gdzieś zatrzymać. Słownik to najlepszy wybór. – AliBZ

0

Jeśli indeksy są kolejne liczby całkowite, można skorzystać z listy zamiast dict:

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

używać go tylko wtedy, gdy naprawdę pasuje do Twojego problemu, choć.