So speichern Sie eine Python-Funktion im Wert eines Wörterbuchs (dict) und rufen die Funktion gemäß dem Schlüssel auf

1. Deklarieren Sie eine Methode (Funktion)

Python3


def sample_func_1(text : str) -> str:
    add_text = "String hinzugefügt"
    return (text + add_text)


def sample_func_2(text : str) -> str:
    add_text2 = "String hinzugefügt"
    return (text + add_text2)

2. Schreiben Sie die Funktion in * Wert * des Objekts vom Typ Wörterbuch (* dict *) ohne Klammern.

Python3


func_dict = {
	'label_1' : sample_func_1,
	'label_2' : sample_func_2
	}

3. Rufen Sie die Funktion auf und führen Sie sie mit dem Objekt vom Typ Wörterbuch aus * Key * label name

Der Wert des Wörterbuchs (* dict ) ist das Funktions- (Methoden-) Objekt selbst. Um eine Funktion (Methode) auszuführen, müssen daher Klammern ("()") hinzugefügt werden, um das Argument zum Wert des Wörterbuchs ( func_dict *) zu erhalten.

Das Ergebnis des Aufrufs der Funktion (Methode) "selbst", die als Wertwert des Wörterbuchs (* dict *) ohne die Klammern ("()") gespeichert ist, ist wie folgt.

Python3


func_dict['label_1']
<function sample_func_1 at 0x100bafb80>

Um die aus dem Wörterbuch aufgerufene Funktion (Methode) mit dem obigen Code auszuführen, muss eine Klammer ("()") eingefügt werden, die das Argument empfängt.

Python3


func_dict['label_1']()

__ Wenn * funct_dict * eine Methode ist, die ein oder mehrere Argumente empfängt, tritt ein Fehler auf, wenn Sie die Funktion aufrufen, ohne Argumente anzugeben. __ __

Die definierte Methode (Funktion) war eine Funktion, die ein Objekt vom Typ * str * als Argument verwendet. Übergeben Sie eine entsprechende Zeichenfolge als Argument und versuchen Sie, die in * func_dict * gespeicherte Methode (Funktion) auszuführen.

Python3


func_dict['label_1']("vxw")
#Ausführungsergebnis
'vxw hat einen String hinzugefügt'

(Referenz)

Python3


func_dict
#Ausführungsergebnis
{'label_1': <function sample_func_1 at 0x100bafaf0>, 'label_2': <function get_text_from_ppt at 0x100bafa60>}

func_dict['label_1']
<function sample_func_1 at 0x100bafb80>

type(func_dict['label_1'])
#Ausführungsergebnis
<class 'function'>

type(func_dict['label_1']())
#Ausführungsergebnis
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sample_func_1() missing 1 required positional argument: 'text'

type(func_dict['label_1']("giho"))
#Ausführungsergebnis
<class 'str'>

func_dict['label_1']("giho")
#Ausführungsergebnis
'giho hat eine Zeichenkette hinzugefügt'

returned_value = func_dict['label_1']("giho")
returned_value
#Ausführungsergebnis
'giho hat eine Zeichenkette hinzugefügt'

(Referenzierte Webseite)

  1. @ satoichis Qiita-Artikel "[Python] Funktionen gemeinsam mit einem Wörterbuch ausführen"
  2. "Wörterbuch der Schlüsselwortargumente mit [Python] **"

(Verwendung)

Mit der diesmal eingeführten Methode ist es möglich, die dem * Schlüssel * entsprechende Funktion (Methode) gemäß dem im Objekt vom Typ Wörterbuch definierten Wert von * Schlüssel * aufzurufen.

Dies ist nützlich, wenn Sie Logik benötigen, um die entsprechende Funktion (Methode) zu wechseln, die in Abhängigkeit von den Bedingungen im Datenverarbeitungsfluss aufgerufen werden soll.

Als grundlegendes Beispiel können Sie sich eine Situation vorstellen, in der eine Funktion (Methode), die die erforderliche Verarbeitung für eine gelesene Datei ausführt, dynamisch ausgewählt, aufgerufen und entsprechend dem Inhalt der Erweiterung der gelesenen Datei ausgeführt wird.

Der Code zum Ausschneiden nur der Textzeichenfolge und zum Abrufen der Daten aus der PDF-Datei, der Word-Datei und der Excel-Datei wird auf der folgenden Webseite vorgestellt.

  1. deecode blog "[Python] Bibliotheksbeispielcode zum Extrahieren von Text aus Word / Excel / PowerPoint / PDF"
  2. @ butadas Qiita-Artikel "Text Mining aus PDF- / Docx-Dateien"

Python3


def get_text_from_txt(filename : str) -> str:
Lesen Sie die Textdatei, die in dem als Dateiname empfangenen Pfad gespeichert ist, und lesen Sie den Text*str*Verarbeitung zum Erfassen als Objekt und Ausgeben als Rückgabewert

    return text

def get_text_from_pdf(filename : str) -> str:
Lesen Sie die PDF-Datei, die im als Dateiname empfangenen Pfad gespeichert ist, extrahieren Sie die Textzeichenfolge und eine*str*Verarbeitung zur Verkettung mit einem Objekt und Ausgabe als Rückgabewert
    return text

def get_text_from_word(filename : str) -> str:
Lesen Sie die Word-Datei, die in dem als Dateiname empfangenen Pfad gespeichert ist, extrahieren Sie die Textzeichenfolge und eine*str*Verarbeitung zur Verkettung mit einem Objekt und Ausgabe als Rückgabewert
    return text

def get_text_from_excel(filename : str) -> str:
Lesen Sie die Excel-Datei, die in dem als Dateiname empfangenen Pfad gespeichert ist, extrahieren Sie die Textzeichenfolge und eine*str*Verarbeitung zur Verkettung mit einem Objekt und Ausgabe als Rückgabewert
    return text

func_dict = {
	'txt' : get_text_from_txt,
	'pdf' : get_text_from_pdf,
    'word' : get_text_from_word,
    'excel' : get_text_from_excel
         }

(Bemerkungen)

Wenn Sie beim Speichern einer Funktion (Methode) in * Wert * des Wörterbuchs die Funktion in Klammern setzen, tritt der folgende Fehler auf. Wenn Sie versuchen, eine Funktion auszuführen, wird sie interpretiert.

PZython3


func_dict = {
	     'label_1' : sample_func_1(),
	     'label_2' : sample_func_2()
		 }
#Ausführungsergebnis
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: sample_func_1() missing 1 required positional argument: 'text'
 

Definieren eines Wörterbuchs Im obigen Code können Sie ein Wörterbuch definieren (kein Fehler), indem Sie ein bestimmtes Argument in den Klammern von * sample_func_1 () * angeben.

Die in * Wert * des Wörterbuchs gespeicherte Funktion wird jedoch zu einer Funktion, die nur die Argumente empfangen kann, die beim Definieren des Wörterbuchs empfangen wurden.

__ (Wörterbuchdefinition) __

Python3


func_dict = {
    'label_1' : sample_func_1("abc"),
    'label_2' : sample_func_2("def")
}

__ (Aufrufen einer Funktion im Wörterbuch) __

Im * func_dict * -Wörterbuch wird die Funktion * sample_func_1 ("abc") , die als * Wert * definiert ist, der * Schlüssel * " label_1 *" entspricht, mit dem angegebenen Argument "abc" ausgeführt. Geschah.

Python3


func_dict['label_1']
#Ausführungsergebnis
'abc String hinzugefügt'

Python3


func_dict['label_1']()
#Ausführungsergebnis
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable

Python3


func_dict['label_1']("abc")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable

Python3


unc_dict['label_1']('abc')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable


(Bemerkung 2)

__ Speichern Sie eine Textzeichenfolge in * Val * des Wörterbuchs und rufen Sie die Funktion mit * eval * und * exec * auf. __ __

__ Es ist jedoch nicht elegant, da es die Anzahl der Striche auf der Tastatur erhöht. __ __

Python3


func_dict = {
    'label_1' : "sample_func_1({arg})",
    'label_2' : "sample_func_2({arg})"
    }

Python3


func_dict
#Ausführungsergebnis
{'label_1': 'sample_func_1({arg})', 'label_2': 'sample_func_2({arg})'}
 
func_dict['label_1']
#Ausführungsergebnis
'sample_func_1({arg})'

expression = func_dict['label_1'].format(arg="'123'")
expression
#Ausführungsergebnis
"sample_func_1('123')"


eval(expression)
#Ausführungsergebnis
'123 String hinzugefügt'

result = eval(expression)
result
#Ausführungsergebnis
'123 String hinzugefügt'

add_text = "result2="
text = add_text + expression
text
#Ausführungsergebnis
"result2=sample_func_1('123')"

exec(text)
result2
#Ausführungsergebnis
'123 String hinzugefügt'

Recommended Posts

So speichern Sie eine Python-Funktion im Wert eines Wörterbuchs (dict) und rufen die Funktion gemäß dem Schlüssel auf
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
[Python] So überprüfen Sie, ob der Schlüssel im Wörterbuch vorhanden ist
So erreichen Sie den Zugriff durch Attribut und Beibehaltung der Einfügereihenfolge in Python dict
[Python] Zusammenfassung zum Abrufen von Listen und Wörterbuchelementen
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
So überprüfen Sie anhand des Hashwerts, ob der Inhalt des Wörterbuchs in Python identisch ist
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
Verwendung ist und == in Python
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
So generieren Sie eine Sequenz in Python und C ++
Zusammenfassung zum Importieren von Dateien in Python 3
Zusammenfassung der Verwendung von MNIST mit Python
So erhalten Sie Elemente vom Typ Wörterbuch von Python 2.7
[Python] Verwendung von Hash-Funktion und Taple.
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
So rufen Sie den n-ten größten Wert in Python ab
So ermitteln Sie die Anzahl der Stellen in Python
So definieren Sie Decorator und Decomaker mit einer Funktion
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
So rufen Sie eine Funktion auf
Wie man in Python entwickelt
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
Verwendung der Methode __call__ in der Python-Klasse
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
Wie man aus einer Wahrscheinlichkeitsdichtefunktion in Python tastet
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Ausführen externer Shell-Skripte und -Befehle in Python
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Übersicht über die virtuelle Python-Umgebung und deren Erstellung
So erstellen Sie eine Instanz einer bestimmten Klasse aus dict mit __new__ () in Python
[Python] So löschen Sie eine Zeile / Spalte in einer Tabelle (Liste der Optionen für die Drop-Methode)
[Super einfach! ] So zeigen Sie den Inhalt von Wörterbüchern und Listen einschließlich Japanisch in Python an
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
So aktualisieren Sie die App Store-Beschreibung in Google Spreadsheets und Fastlane automatisch
[Python] Wie man PCA mit Python macht
So bestimmen Sie die Existenz eines Selenelements in Python
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Wie Sie die interne Struktur eines Objekts in Python kennen
So sammeln Sie Bilder in Python
Verwendung von SQLite in Python
So überprüfen Sie die Speichergröße einer Variablen in Python
[Einführung in die Udemy Python3 + -Anwendung] 49. Funktionszitat und Rückgabewertdeklaration
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version
[Python] Ausführungszeit, wenn eine Funktion in einen Wörterbuchwert eingegeben wird
So stellen Sie fest, dass in Python3 ein Kreuzschlüssel eingegeben wurde
Wie man MySQL mit Python benutzt
[Python] So erhalten Sie mit Enum einen Wert mit einem anderen Schlüssel als dem Wert
[ROS2] Beschreibung der Neuzuordnung und der Parameter beim Start des Python-Formats
So verpacken Sie C in Python
Verwendung von ChemSpider in Python