Ich habe viele Listen in diesem Format:

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

Ich muss ein Wörterbuch mit dem Schlüssel als erstem Element in der Liste und dem Wert als gesamte Liste erstellen. Keiner der Schlüssel wiederholt sich. Was ist der beste Weg das zu tun?

7
wannabe_geek 5 Juni 2013 im 03:56

3 Antworten

Beste Antwort

Fügen Sie alle Ihre Listen in eine andere Liste ein und gehen Sie folgendermaßen vor:

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

Dies erhält im Grunde das erste Element und setzt es als Schlüssel in my_dict und setzt die Liste als Wert.

5
AliBZ 21 Okt. 2015 im 22:17
>>> 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', '', '']}
9
jamylak 4 Juni 2013 im 23:57

Wenn Ihre Indizes sequentielle Ganzzahlen sind, können Sie eine Liste anstelle eines Diktats verwenden:

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

Verwenden Sie es jedoch nur, wenn es wirklich zu Ihrem Problem passt.

0
Elazar 5 Juni 2013 im 00:06