Seite 1 von 1

Wie arbeitet die "lambda"-Funktion?

Verfasst: Mittwoch 2. März 2022, 18:29
von werhei14
Hallo,

--------------------------------------------------------------------------------------------------------------------
for key, value in sorted(d.items(), key=lambda x: x[1], reverse=True):
--------------------------------------------------------------------------------------------------------------------


Im dict "d" wurden Worthäufigkeiten nach den Wörtern(key) mit deren
Vorkommen(Value) sortiert.

Durch die lambda-Funktion erfolgt nun die Sortierung nach den
Worthäufigkeiten(Value) und nicht mehr nach den Wörtern.

Das ganze funktioniert gut.

Ich kann mir aber keine Vorstellung davon machen, in welchen Schritten
die lambda-Funktion das erreicht.

Kann mir jemand den Ablauf(Schritte) zeigen?

Gruß
Werner

Re: Wie arbeitet die "lambda"-Funktion?

Verfasst: Mittwoch 2. März 2022, 18:57
von Sirius3
Warum verwendest Du für die Worthäufigkeit nicht collections.Counter? Das ist deutlich klarer und einfacher, als sich da selbst was zusammenzustricken.

Was liefert d.items()? Was wird also an lambda x: x[1] als `x` übergeben und was ist dann x[1]?

Re: Wie arbeitet die "lambda"-Funktion?

Verfasst: Mittwoch 2. März 2022, 19:01
von werhei14
Ich bin nur an der Arbeitsweise der lambda-Funktion interessiert.

Gruß Werner

Re: Wie arbeitet die "lambda"-Funktion?

Verfasst: Mittwoch 2. März 2022, 19:13
von __deets__
Versuch doch mal die Fragen von Sirius3 für dich zu beantworten. Hoffentlich bringtbdas Klarheit.

Re: Wie arbeitet die "lambda"-Funktion?

Verfasst: Mittwoch 2. März 2022, 20:18
von narpfel
@werhei14: Wenn es nur um die Lambda-Funktion geht: Die arbeitet genau so wie eine „normale“ Funktion. Ein

Code: Alles auswählen

f = lambda x: x[1]
ist genau das gleiche wie ein

Code: Alles auswählen

def f(x):
    return x[1]
Entweder beantwortet das also deine Frage oder dein Verständnisproblem hat nichts mit `lambda` zu tun, sondern mit `sorted` und der `items`-Methode, die du aufrufst.

Re: Wie arbeitet die "lambda"-Funktion?

Verfasst: Donnerstag 3. März 2022, 00:55
von snafu
Die Lambda Funktion gibt da stumpf für jedes Element X den Wert am Index 1 zurück, hier also beim Schlüssel-Wert-Paar den Wert. Mehr macht die nicht. Die sorted() Funktion nimmt hierdurch halt die Werte als Grundlage und nicht die Schlüssel. Du scheinst da ein bisschen zu viel in Lambda zu interpretieren.

Re: Wie arbeitet die "lambda"-Funktion?

Verfasst: Donnerstag 3. März 2022, 14:45
von __blackjack__
Vielleicht noch als Anmerkung: Eventuell wäre es sinnvoll das die Funktion mehr macht, denn wenn Worte gleich häufig vorkommen ist im Moment nicht (sinnvoll) festgelegt wie diese sortiert werden. Da hätte man dann vielleicht gerne alphabetisch, statt dass das an der Reihenfolge hängt in der die Worte in `d` (sehr schlechter Name!) eingefügt/aktualisiert wurden. Falls `d` überhaupt ein `dict` ist und nicht noch mal ganz andere Regeln für die Reihenfolge von `items()` gelten).

Und ein Hinweis auf `operator.itemgetter()`. Also:

Code: Alles auswählen

#!/usr/bin/env python3
from operator import itemgetter


def main():
    ...
    for word, count in sorted(
        word_to_count.items(), key=itemgetter(1, 0), reverse=True
    ):
        ...


if __name__ == "__main__":
    main()

Re: Wie arbeitet die "lambda"-Funktion?

Verfasst: Donnerstag 3. März 2022, 22:09
von werhei14
wow Jungs, ihr seid klasse!