Schreiben Sie Python-ähnlichen Code (Dictionary)

Einführung

Da es eine große Sache war, Python zu lernen, habe ich untersucht, wie man es wie Python schreibt. Python-ness stimmt mit Pythons effizientem Code überein.

Referenzierte Folie https://speakerdeck.com/pyconslides/transforming-code-into-beautiful-idiomatic-python-by-raymond-hettinger-1 http://kesin.hatenablog.com/entry/2013/05/12/004541

Verwendung des Wörterbuchs

Dies ist genau wie Python und die Verwendung eines Wörterbuchs ist eine sehr wichtige und grundlegende Technik. Es scheint eine gute Möglichkeit zu geben, sich um das Wörterbuch zu kümmern.

Schleife mit Schlüssel

Sie können eine Schleife nach Schlüssel ausführen, indem Sie entweder ein Wörterbuch angeben oder die Methode "keys" des Wörterbuchobjekts verwenden.

d = {'kaijo': 'red', 'shinmei': 'blue', 'ooiwa': 'yellow', 'pegie': 'pink', 'asuka': 'green'}
for k in d:
    print(k)
    
for k in d.keys():
    print(k)

Schlüssel, Werteschleife

Als Methode zum Schleifen des Schlüssels und des Werts ist es möglich, den oberen Schlüssel zu durchlaufen und den Wert vom Schlüssel zu erhalten. Python-Wörterbücher verfügen über eine "items" -Methode, die das Abrufen von Werten aus dem Wörterbuch mithilfe von Schlüsseln überflüssig macht. Zusätzlich können die Wertvariablen frei bestimmt werden, wodurch der Code leicht lesbar ist.

d = {'kaijo': 'red', 'shinmei': 'blue', 'ooiwa': 'yellow', 'pegie': 'pink', 'asuka': 'green'}
for k in d:
    print(k, '->', d[k])

for k, v in d.items():
    print(k, '->', v)

Erstellen Sie ein Wörterbuch aus zwei Listen

Wenn Sie bereits eine Liste mit Schlüsseln und eine Liste mit Werten haben, können Sie diese kombinieren, um ein Wörterbuch zu erstellen. Sie können dies tun, ohne die Anweisung "for" zu verwenden.

from itertools import izip

keys = ['kaijo', 'shinmei', 'ooiwa', 'pegie', 'asuka']
values = ['red', 'blue', 'yellow', 'pink', 'green']

d = dict(izip(keys, values))

Wenn Sie ein Wörterbuch mit indexähnlichen Seriennummern erstellen möchten, können Sie es mit "enumerate" erstellen.

values = ['red', 'blue', 'yellow', 'pink', 'green']

d = dict(enumerate(values))

Zählen mit einem Wörterbuch

Wenn Sie verarbeiten, wie oft dasselbe Wort in einem englischen Satz vorkommt, können Sie sich die folgende Verarbeitung leicht vorstellen.

colors = ['red', 'green', 'red', 'blue', 'green', 'red']

d = {}
for color in colors:
    if not color in d:
        d[color] = 0
    d[color] += 1

Die get -Methode des Wörterbuchs gibt zurück, wie viele Schlüssel Sie angegeben haben. Wenn jedoch keine Schlüssel vorhanden sind, wird der im Argument angegebene Wert zurückgegeben. Sie können damit wie folgt schreiben.

colors = ['red', 'green', 'red', 'blue', 'green', 'red']

d = {}
for color in colors:
    d[color] = d.get(color, 0) + 1

Das defaultdict des collection-Moduls kann hinzugefügt werden, wenn kein Schlüssel vorhanden ist. Sie können damit auch wie folgt schreiben. Es ist einfacher zu lesen als "get".

from collections import defaultdict

colors = ['red', 'green', 'red', 'blue', 'green', 'red']

d = defaultdict(int)
for color in colors:
    d[color] += 1

Gruppieren mit einem Wörterbuch

Wenn Sie beispielsweise eine Liste von Wörtern haben und diese nach der Anzahl der Zeichen im Wort gruppieren möchten, gibt es einen einfachen Code zum Festlegen eines Standardwerts (in diesem Fall einer Liste, in der Namen gespeichert sind), wenn kein Schlüssel vorhanden ist. Sie können die Methode "setdefault" verwenden, um den Standardwert zu speichern.

names = ['raymond', 'rachel', 'matthew', 'ronger', 'betty', 'melissa', 'judith', 'charlie']

d = {}
for name in names:
    key = len(name)
    if not key in d:
        d[key] = []
    d[key].append(name)

d2 = {}
for name in names:
    key = len(name)
    d2.setdefault(key, []).append(name)

Dies kann wie folgt mit dem vorherigen "defaultdict" geschrieben werden. Die "Wenn" -Anweisung ist weg und elegant.

from collections import defaultdict

names = ['raymond', 'rachel', 'matthew', 'ronger', 'betty', 'melissa', 'judith', 'charlie']

d = defaultdict(list)
for name in names:
    key = len(name)
    d[key].append(name)

Recommended Posts

Schreiben Sie Python-ähnlichen Code (Dictionary)
Schreiben Sie Python-ähnlichen Code
Schreiben Sie die Standardeingabe in den Code
Schreiben Sie Spigot in VS Code
Schreiben, kompilieren und führen Sie Code auf codeanywhere.com aus
Schreiben Sie Selentestcode in Python
Hinweise zum Schreiben von Python-ähnlichem Code
Schreiben Sie den Ethereum-Vertragscode mit Serpent
Qiita (1) Wie schreibe ich einen Codenamen?
Schreiben Sie testgetriebenen FizzBuzz-Code mit Python doctest.
Ist es nicht in Ordnung, Testcode zu schreiben?