Bestimmte Listenelemente in neue Liste schreiben??

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Katharina
User
Beiträge: 7
Registriert: Freitag 31. August 2018, 19:27

Hallo, ich stehe vor folgendem Problem:

Meine Liste sieht wie folgt aus:

Code: Alles auswählen

liste = [z_0101, z_0102, z_0103, z_0201, z_0202, z_0301]
Ich möchte gerne alle Elemente, bei denen das dritte und vierte Zeichen identisch ist, in eine neue Liste schreiben ...
D.h.:

Code: Alles auswählen

z_01 = [z_0101, z_0102, z_0103]
z_02 = [z_0201, z_0202]
z_03 = [z_0301]
Hätte dazu jemand vielleicht eine Idee, wie ich dass angehen könnte?

Danke für eure Antworten!
Benutzeravatar
__blackjack__
User
Beiträge: 13922
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Katharina: Das löst man mit einem Wörterbuch (`dict`) bei dem die Schlüssel Deine Variablennamen als Zeichenketten und die Werte Listen mit den Elementen sind. Wobei ich jetzt mal davon ausgehe, das die Werte in der Ausgangsliste eigentlich Zeichenketten sein sollten und nicht tatsächlich Namen. Speziell in diesem Fall kann einem ein `collections.defaultdict` den Code etwas einfacher machen.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Benutzeravatar
__blackjack__
User
Beiträge: 13922
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Code: Alles auswählen

#!/usr/bin/env python3
from collections import defaultdict


def main():
    strings = ['z_0101', 'z_0102', 'z_0103', 'z_0201', 'z_0202', 'z_0301']
    
    result = defaultdict(list)
    for string in strings:
        result[string[2:4]].append(string)
    
    for key, value in sorted(result.items()):
        print('{} = {}'.format(key, value))


if __name__ == '__main__':
    main()
Ausgabe:

Code: Alles auswählen

01 = ['z_0101', 'z_0102', 'z_0103']
02 = ['z_0201', 'z_0202']
03 = ['z_0301']
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Katharina
User
Beiträge: 7
Registriert: Freitag 31. August 2018, 19:27

Hallo,

vielen Dank für deine Antwort _blackjack_!
Das ist genau das was ich benötigt habe.

LG Katharina
Benutzeravatar
DeaD_EyE
User
Beiträge: 1205
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Seit Python 3.6 wird sogar die Reihenfolge des dicts behalten und seit 3.7 ist es in der Sprache auch so festgelegt worden.
D.h. wenn du Python 3.6/3.7 nutzt, stimmt die Reihenfolge der zuerst hinzugefügten Elemente mit der Ausgabe überein.

Vor Python 3.6 war die Reihenfolge in dicts zufällig.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Katharina
User
Beiträge: 7
Registriert: Freitag 31. August 2018, 19:27

@ DeaD_EyE: Danke für die Info!
LG Katharina
Antworten