Python Dictonary

Dictionary (von lateinisch dictio ‚das Sprechen‘) steht englisch für Wörterbuch.

Wörterbücher werden verwendet, um Datenwerte in Schlüssel:Wert-Paaren zu speichern. Ein Wörterbuch ist eine Sammlung, die geordnet* und veränderbar ist und keine Duplikate zulässt. Ab Python-Version 3.7 sind Wörterbücher geordnet. In Python 3.6 und früheren Versionen sind Wörterbücher ungeordnet. Wörterbücher werden mit geschweiften Klammern geschrieben und haben Schlüssel und Werte.

Die Syntax eines Dictionaries in Python ist wie folgt:

mein_dict = {
    "schlüssel1": wert1,
    "schlüssel2": wert2,
    "schlüssel3": wert3
}

Hierbei gilt:

  1. Dictionaries werden mit geschweiften Klammern {} erstellt.
  2. Schlüssel-Wert-Paare werden durch Doppelpunkte : getrennt.
  3. Mehrere Paare werden durch Kommas voneinander getrennt.
  4. Schlüssel müssen eindeutig und unveränderbar sein (z.B. Strings, Zahlen oder Tupel).
  5. Werte können beliebige Datentypen haben, einschließlich anderer Dictionaries oder Listen.

Alternativ kann ein Dictionary auch mit der dict()-Funktion erstellt werden:

mein_dict = dict(schlüssel1=wert1, schlüssel2=wert2, schlüssel3=wert3)

Dictionaries in Python sind geordnet (seit Python 3.7), veränderbar und erlauben keine Duplikate bei den Schlüsseln.

from tkinter import *

# Dictionary initialisieren
mein_dict = {
    "сбн.": "fM"
}

def hinzufuegen():
    # Werte aus den Eingabefeldern holen
    russisch = eingabefeld_russisch.get("1.0", END).strip()
    deutsch = eingabefeld_deutsch.get("1.0", END).strip()

    # Überprüfen, ob beide Felder ausgefüllt sind
    if russisch and deutsch:
        mein_dict[russisch] = deutsch  # Eintrag ins Dictionary hinzufügen
        print(f"Eintrag hinzugefügt: {russisch} -> {deutsch}")
        print("Aktuelles Dictionary:", mein_dict)
        # Felder leeren
        eingabefeld_russisch.delete("1.0", END)
        eingabefeld_deutsch.delete("1.0", END)
    else:
        print("Bitte beide Felder ausfüllen!")

# GUI erstellen
root = Tk()
root.title("Einträge ins Dictionary hinzufügen")
root.geometry("400x400")

Label(root, text="russischer Begriff:").pack(pady=5)
eingabefeld_russisch = Text(root, height=2, width=30)
eingabefeld_russisch.pack(pady=10)

Label(root, text="Deutsche Übersetzung:").pack(pady=5)
eingabefeld_deutsch = Text(root, height=2, width=30)
eingabefeld_deutsch.pack(pady=10)

Button(root, text="Hinzufügen", command=hinzufuegen).pack(pady=10)
Button(root, text="Abbrechen", command=root.destroy).pack(pady=5)

root.mainloop()

Um die Dictionary-Einträge zu speichern, haben Sie mehrere Möglichkeiten:

  1. Verwenden Sie das pickle-Modul:
   import pickle

   with open('mein_dict.pkl', 'wb') as f:
       pickle.dump(mein_dict, f)

Dies serialisiert das Dictionary und speichert es in einer binären Datei.

  1. Nutzen Sie das json-Modul für eine menschenlesbare Textdatei:
   import json

   with open('mein_dict.json', 'w') as f:
       json.dump(mein_dict, f)

Diese Methode ist besonders nützlich, wenn Sie die Daten später auch in anderen Programmen verwenden möchten.

  1. Speichern Sie das Dictionary in einer CSV-Datei:
   import csv

   with open('mein_dict.csv', 'w') as f:
       writer = csv.writer(f)
       for key, value in mein_dict.items():
           writer.writerow([key, value])

Diese Option eignet sich gut für tabellarische Daten.

Die Wahl der Methode hängt von Ihren spezifischen Anforderungen ab. Pickle ist am einfachsten für reine Python-Anwendungen, JSON ist vielseitig einsetzbar, und CSV eignet sich gut für den Datenaustausch mit Tabellenkalkulationsprogrammen.

from tkinter import *
import pickle

# Dictionary initialisieren
russisch_dict = {
    "сбн.": "fM"
}

# Speichern des Dictionaries
with open('russisch-dict.pkl', 'wb') as f:
    pickle.dump(russisch_dict, f)

def hinzufuegen():
    # Werte aus den Eingabefeldern holen
    russisch = eingabefeld_russisch.get("1.0", END).strip()
    deutsch = eingabefeld_deutsch.get("1.0", END).strip()

    # Überprüfen, ob beide Felder ausgefüllt sind
    if russisch and deutsch:
        russisch_dict[russisch] = deutsch  # Eintrag ins Dictionary hinzufügen
        print(f"Eintrag hinzugefügt: {russisch} -> {deutsch}")
        print("Aktuelles Dictionary:", russisch_dict)
        # Felder leeren
        eingabefeld_russisch.delete("1.0", END)
        eingabefeld_deutsch.delete("1.0", END)
        
        # Dictionary nach jedem Hinzufügen speichern
        with open('russisch-dict.pkl', 'wb') as f:
            pickle.dump(russisch_dict, f)
    else:
        print("Bitte beide Felder ausfüllen!")

# GUI erstellen
root = Tk()
root.title("Einträge ins Dictionary hinzufügen")
root.geometry("400x400")

Label(root, text="russischer Begriff:").pack(pady=5)
eingabefeld_russisch = Text(root, height=2, width=30)
eingabefeld_russisch.pack(pady=10)

Label(root, text="Deutsche Übersetzung:").pack(pady=5)
eingabefeld_deutsch = Text(root, height=2, width=30)
eingabefeld_deutsch.pack(pady=10)

Button(root, text="Hinzufügen", command=hinzufuegen).pack(pady=10)
Button(root, text="Abbrechen", command=root.destroy).pack(pady=5)

root.mainloop()