Seite 1 von 1

Bestimmte Listenelemente in neue Liste schreiben??

Verfasst: Freitag 31. August 2018, 19:40
von Katharina
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!

Re: Bestimmte Listenelemente in neue Liste schreiben??

Verfasst: Samstag 1. September 2018, 11:45
von __blackjack__
@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.

Re: Bestimmte Listenelemente in neue Liste schreiben??

Verfasst: Samstag 1. September 2018, 13:43
von __blackjack__

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']

Re: Bestimmte Listenelemente in neue Liste schreiben??

Verfasst: Montag 3. September 2018, 13:14
von Katharina
Hallo,

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

LG Katharina

Re: Bestimmte Listenelemente in neue Liste schreiben??

Verfasst: Dienstag 4. September 2018, 08:06
von DeaD_EyE
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.

Re: Bestimmte Listenelemente in neue Liste schreiben??

Verfasst: Dienstag 4. September 2018, 14:06
von Katharina
@ DeaD_EyE: Danke für die Info!
LG Katharina