Seite 1 von 1

Sind Listen mit Unterlisten ohne int index möglich?

Verfasst: Montag 1. Juni 2015, 08:43
von DerRobert
Hi Leute!

Ich versuche gerade python mittels eines Projektes zu lernen.
Auf folgendes Problem bin ich gestoßen bei dem ich nun schon tagelang anstehe:
Es wird aus Dateinamen eine Liste erstellt mit Strings (=Gruppe), die sich natürlich bei jeder Ausführung des Scripts ändern kann.
Es sollen Aufgrund dieser Gruppen- items andere Einträge unter diesen items gruppiert werden um gezählt werden zu können:

Code: Alles auswählen

Gruppenliste[ Gruppe1[ Eintrag1, Eintrag2 ], Gruppe2[ Eintrag1, Eintrag2, Eintrag3 ] ]
Wie am Beispiel gezeigt kann es vorkommen, dass eine Gruppe mehr Einträge hat als die andere, weswegen eine Matrix lt. meinen Recherchen nicht in Frage kommt - oder doch? :|
Erschwerend kommt hinzu, dass eben die Namen der Gruppen in der Gruppen-Liste als String vorliegen sollen um die weitere Verarbeitung zu vereinfachen - ist das möglich? :K

Bitte um euren Rat :)

Re: Sind Listen mit Unterlisten ohne int index möglich?

Verfasst: Montag 1. Juni 2015, 08:58
von ngulam
sicher geht das (wenn ich die Frage verstanden habe :K )

würde hier ein dictionary anstelle einer Liste vorschlagen:

Code: Alles auswählen

In [13]: gruppenliste = {}
In [14]: gruppenliste['gruppe1'] = ['eintrag1', 'eintrag2']
In [15]: gruppenliste['gruppe2'] = ['eintrag1', 'eintrag2', 'eintrag3']
In [16]: gruppenliste
Out[16]: 
{'gruppe1': ['eintrag1', 'eintrag2'],
 'gruppe2': ['eintrag1', 'eintrag2', 'eintrag3']}

Re: Sind Listen mit Unterlisten ohne int index möglich?

Verfasst: Montag 1. Juni 2015, 08:59
von JonasR
Moin,

hast du schon ein Python Tutorial gemacht? Dann müsstest du eigentlich ein Element kennen, das sich wie eine benamste Liste verhält.

@ngulam, gerade bei Anfängern, sollte man nicht immer gleich die komplette Lösung vorarbeiten

Re: Sind Listen mit Unterlisten ohne int index möglich?

Verfasst: Montag 1. Juni 2015, 09:17
von DerRobert
Danke für die Rückmeldungen!
Das Dictionary hatte ich mir wegen der String-indizes schon angesehen, aufgrund der Doku (https://docs.python.org/2/tutorial/data ... ctionaries) hat sich mir nicht eröffnet, dass man auch Listen in Dictionaries einbauen kann.
Beim Versuch sie im Script zu verwenden hat das auch nicht geklappt weswegen ich mich schlussendlich an Euch gewendet habe.
Ich werd's gleich nochmal testen - vielleicht war ja ein anderer Fehler schuld dran…

Danke nochmals - echt lässig wie schnell und kompetent hier geantwortet wird! :)

edit:
Sieht aus, als ob es funktionieren würde :)

Re: Sind Listen mit Unterlisten ohne int index möglich?

Verfasst: Montag 1. Juni 2015, 12:09
von snafu
@DerRobert: Als Werte kann man in einem Dictionary beliebige Objekte verwenden. Es gibt nur bei den Schlüsseln die Einschränkung, dass der Objekttyp hashbar sein muss. Man kann daher eine Liste nicht als Schlüssel nehmen, aber als Wert eben schon.

Und falls man doch mal etwas "listenartiges" für den Schlüssel verwenden möchte, dann bieten sich Tupel als Alternative an. Tupel sind nämlich hashbar.

Re: Sind Listen mit Unterlisten ohne int index möglich?

Verfasst: Montag 1. Juni 2015, 12:11
von Hyperion
Du kannst bei einem Dictionary *jedes hashbare* Objekt als Schlüssel nehmen; also nicht nur Strings! Z.B. geht das auch für boolesche Werte:

Code: Alles auswählen

print({True: "wahr", False: "falsch"}[False])
> falsch
Edit: snafu war schneller, ich poste das aber aufgrund des schönen Beispiels dennoch :-)