Unklarer Lambda Ausdruck

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
_Euklid_
User
Beiträge: 5
Registriert: Sonntag 22. März 2020, 13:48

Guten Tag,

ich habe folgenden Code gefunden, den ich bis auf einen Ausdruck soweit nachvollziehen kann:

Code: Alles auswählen

from collections import Counter, defaultdict



inputs = [({'label': 'mid', 'language':'python'}, True),
    ({'label': 'mid', 'language':'html'}, False),
    ({'label': 'jun', 'language':'python'}, True),
    ({'label': 'sen', 'language':'c'}, True),
    ({'label': 'jun', 'language':'c'}, False)]
    
def group_by(items, key_fn):
    """returns a defaultdict(list), where each input item
    is in the list whose key is key_fn(item)"""
    groups = defaultdict(list)
    for item in items:
        print(item)
        key = key_fn(item)
        print(key)
        groups[key].append(item)
    return groups

def partition_by(inputs, attribute):
    """returns a dict of inputs partitioned by the attribute
    each input is a pair (attribute_dict, label)"""
    return group_by(inputs, lambda x: x[0][attribute])

def partition_entropy_by(inputs,attribute):
    """computes the entropy corresponding to the given partition"""
    partitions = partition_by(inputs, attribute)
    print(partitions)

partition_entropy_by(inputs, 'label')
Ich bin in Python noch neu und hänge etwas bei dem Lambda Ausdruck fest:

Code: Alles auswählen

lambda x: x[0][attribute]
Was heißt das genau? Ich habe versucht mir das mal ausgeben zu lassen aber ich erhalte hierbei eine Referenz oder etwas vergleichbares. Kann Jemand erklären, was dieser Lambda Ausdruck bewirkt? Gibt es hierfür auch eine andere Implementierung, also eine Alternative zu dem Lambda Ausdruck?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein lambda ist einfach eine kleine Funktion.

Code: Alles auswählen

lambda x: x[0][attribute]
ist aequivalent zu

Code: Alles auswählen

def anonymer_funktions_name(x):
    return x[0][attribute]
_Euklid_
User
Beiträge: 5
Registriert: Sonntag 22. März 2020, 13:48

Danke für deine rasche Antwort! Aber was wäre in diesem Fall das x?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du mal die Dokumentation der Funktion, in der das Lambda verwandt wird, angeschaut? Dann sollte das klar werden, was x ist.
Antworten