Seite 1 von 1

Listen in Liste + NoneType = gleiche Elemente zahlen

Verfasst: Donnerstag 4. Dezember 2014, 19:01
von Zoja
Ich habe eine keyword_liste mit Listen als Elemente und darin stehen Keywords [["hallo", "zwei", "was", "drei"], None, None, ["hallo","vier","dreck"], None, ["was","geht"]].

Jetzt will ich gucken welche Keywords sind gleich und diese zählen und ausgeben mit deren Häufigkeit. Mein Problem ist aber der NoneType Error, weil da ja None steht, d.h. er hört nach dem Auslesen der ersten Liste auf, wie kann ich das denn nun lösen? hab schon mega viel versucht mit try und except, oder zu gucken ob das Keyword is not None und auch Anderes. So weit bin ich zur Zeit:

Code: Alles auswählen


zaehler = 0
for liste in keyword_liste:
        for keyword in liste:
            print type(liste)
            if keyword is not None:
                if keyword == keyword:
                    zaehler = zaehler + 1
                print keyword, zaehler
Danke schonmal im Vorraus

Re: Listen in Liste + NoneType = gleiche Elemente zahlen

Verfasst: Donnerstag 4. Dezember 2014, 19:09
von pillmuncher

Code: Alles auswählen

>>> from collections import Counter
>>> from itertools import chain
>>> data = [["hallo", "zwei", "was", "drei"], None, None, ["hallo","vier","dreck"], None, ["was","geht"]]
>>> counted = Counter(chain.from_iterable(each for each in data if each is not None))
>>> counted
Counter({'hallo': 2, 'was': 2, 'zwei': 1, 'drei': 1, 'dreck': 1, 'geht': 1, 'vier': 1})

Re: Listen in Liste + NoneType = gleiche Elemente zahlen

Verfasst: Donnerstag 4. Dezember 2014, 19:40
von snafu
Als Alternative könnte man hier auch ``filter()`` benutzen:

Code: Alles auswählen

>>> flat_data = chain.from_iterable(filter(None, data))
>>> print(Counter(flat_data))
Counter({'hallo': 2, 'was': 2, 'zwei': 1, 'drei': 1, 'dreck': 1, 'geht': 1, 'vier': 1})

Re: Listen in Liste + NoneType = gleiche Elemente zahlen

Verfasst: Freitag 5. Dezember 2014, 13:15
von Zoja
Super danke Leute! Hat wunderbar geklappt, Topic kann geschlossen werden