Python-Sammlungsmodul

  1. Counter

Counter ist eine untergeordnete Klasse von Diktaten und kann hashbare Objekte zählen.

Zum Beispiel gibt es die folgenden Probleme:

Zählen Sie die Nummer jedes Elements im Array ['a', 'b', 'c', 'c', 'a', 'a'] und erhalten Sie das Ergebnis mit dict

So lösen Sie ohne Verwendung von Counter:

arr = ['a', 'b', 'c', 'c', 'a', 'a']

result_dict = {}
for item in arr:
    if item in result_dict:
        result_dict[item] = result_dict[item] + 1
    else:
        result_dict[item] = 1

print(result_dict)

#Ausgabe
# {'a': 3, 'c': 2, 'b': 1}

So lösen Sie mit Counter:

from collections import Counter

cnt = Counter(['a', 'b', 'c', 'c', 'a', 'a'])
print(cnt)

#Ausgabe
# Counter({'a': 3, 'c': 2, 'b': 1})

Der Zähler kann nicht nur aus einem Array, sondern auch aus dict und args initialisiert werden.

#Zähler mit Diktat initialisieren
a = Counter({'red': 4, 'blue': 2})
print(a)
#Ausgabe
# Counter({'red': 4, 'blue': 2})

#Zähler mit Argumenten initialisieren
b = Counter(cats=4, dogs=8)
print(b)
#Ausgabe
# Counter({'dogs': 8, 'cats': 4})

Die Methode zum Abrufen von Daten vom Zähler entspricht der von dict, und Sie können den Wert per Schlüssel abrufen. Der Unterschied besteht darin, dass beim Abrufen von Daten mit einem nicht vorhandenen Schlüssel der Zähler "0" zurückgibt, während "dict" zu "KeyError" führt.

a = Counter({'red': 4, 'blue': 2})
print(a['red'])
#Ausgabe
# 4

print(a['green'])
#Ausgabe
# 0

1.1 Methodenelemente ()

Der Rückgabewert von elements () ist ein Iterator. Es ist zu beachten, dass der Zähler nicht weniger als 1 ausgibt.

c = Counter(a=2, b=4, c=0, d=-2, e=1)
it = c.elements()
print(type(it))
#Ausgabe
# <class 'itertools.chain'>

print(list(it))
#Ausgabe
# ['a', 'a', 'b', 'b', 'b', 'b', 'e']

1.2 Methode --most_common (n)

most_common (n) gibt eine Liste von Tupeln in der Form "(Element, Anzahl der Vorkommen)" zurück, die in der Reihenfolge der Anzahl der Vorkommen angeordnet ist. Wenn der Parameter "n" angegeben wird, werden "n" Elemente mit der höchsten Anzahl von Vorkommen ausgegeben, und wenn "n" nicht angegeben wird, werden alle Elemente ausgegeben.

c = Counter('abracadabra')
print(c.most_common(2))
#Ausgabe
# [('a', 5), ('b', 2)]

print(c.most_common())
#Ausgabe
# [('a', 5), ('b', 2), ('r', 2), ('c', 1), ('d', 1)]

1.3 Methode --reduktion (other_cnt)

subtrahieren (other_cnt) bedeutet, ein anderes Counter-Objekt vom Counter-Objekt zu subtrahieren.

c = Counter(a=4, b=2, c=0, d=-2, e=10)
d = Counter(a=1, b=2, c=-3, d=4, f=3)
c.subtract(d)
print(c)
#Ausgabe
# Counter({'e': 10, 'a': 3, 'c': 3, 'b': 0, 'f': -3, 'd': -6})

1.4 Methode --update (other_cnt)

update (other_cnt) bedeutet, dem Counter-Objekt ein weiteres Counter-Objekt hinzuzufügen.

c = Counter(a=4, b=2, c=0, d=-2, e=10)
d = Counter(a=1, b=2, c=-3, d=4, f=3)
c.update(d)
print(c)
#Ausgabe
# Counter({'e': 10, 'a': 5, 'b': 4, 'f': 3, 'd': 2, 'c': -3})
  1. namedtuple

Beispielsweise speichert gewöhnliches Tupel Schülerinformationen und gibt sie aus. Das Gericht hat keine andere Wahl, als den Wert nach Index zu ermitteln, wie unten gezeigt. Solche Quellen werden als schlecht lesbar empfunden.

#Student Tupel(Name, Alter, Geschlecht)
stu = ('Kimi', 15, 'male')
print(stu[0])  #Ausgabename
print(stu[1])  #Ausgabealter
print(stu[2])  #Geschlecht ausgeben

namedtuple kann benannte Tupel generieren. Sie können auf die Werte in Tupel-ähnlichen Attributen anstelle von Indizes zugreifen.

from collections import namedtuple

Student = namedtuple('Student', 'name, age, gender')
stu = Student('Kimi', 15, 'male')
print(stu.name)    #Ausgabename
print(stu.age)     #Ausgabealter
print(stu.gender)  #Geschlecht ausgeben

2.1 Methode --_ make ()

_make () kann namedtuple aus iterierbaren Objekten wie list generieren.

from collections import namedtuple

data = ['Kimi', 15, 'male']
Student = namedtuple('Student', 'name, age, gender')
stu = Student._make(data)
print(stu)
#Ausgabe
# Student(name='Kimi', age=15, gender='male')

2.2 Methode --_ asdict ()

_asdict () gibt die Daten in namedtuple mit OrderDict zurück.

from collections import namedtuple

Student = namedtuple('Student', 'name, age, gender')
stu = Student('Kimi', 15, 'male')
stu_dict = stu._asdict()
print(stu_dict)
#Ausgabe
# OrderedDict([('name', 'Kimi'), ('age', 15), ('gender', 'male')])

print(stu_dict['name'])
#Ausgabe
# Kimi

2.3 Methode --_ replace ()

_replace () ändert den Wert von namedtuple und gibt ihn als neues namedtuple-Objekt zurück. Beeinflusst das ursprüngliche Objekt nicht.

from collections import namedtuple

Student = namedtuple('Student', 'name, age, gender')
stu = Student('Kimi', 15, 'male')
new_stu = stu._replace(age=16)
print(new_stu)
#Ausgabe
# Student(name='Kimi', age=16, gender='male')

print(stu)
#Ausgabe
# Student(name='Kimi', age=15, gender='male')

2.4 Attribute --_ Felder

_fields kann mit Tuple den Feldnamen namedtuple abrufen.

from collections import namedtuple

Student = namedtuple('Student', 'name, age, gender')
print(Student._fields)
#Ausgabe
# ('name', 'age', 'gender')

_Felder werden häufig verwendet, um neue benannte Tupel basierend auf vorhandenen benannten Tupeln zu erstellen. Ähnlich wie bei der Klasse "Vererbung".

from collections import namedtuple

Point2D = namedtuple('Point2D', 'x, y')
Point3D = namedtuple('Point3D', Point2D._fields + ('z',))
p = Point3D(30, 18, 90)
print(p)
#Ausgabe
# Point3D(x=30, y=18, z=90)
  1. defaultdict

Wenn Sie beim Abrufen eines Werts aus einem normalen Diktat einen nicht vorhandenen Schlüssel verwenden, erhalten Sie einen KeyError.

my_dict = {'a': 1, 'b': 2}
print(my_dict['c'])
#Ausgabe
# KeyError: 'c'

defaultdict kann ein Diktat mit einem Standardwert erstellen. Gibt den Standardwert zurück, wenn mit einem nicht vorhandenen Schlüssel zugegriffen wird.

from collections import defaultdict

my_dict = defaultdict(lambda: 0, {'a': 1, 'b': 2})
print(my_dict['c'])
#Ausgabe
# 0

Recommended Posts

Python-Sammlungsmodul
Python-Modul importieren
Python-Modul (Python-Lernnotiz ④)
Erstellen Sie ein Python-Modul
Import des Python-Originalmoduls
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Python-Modul-Importe alphabetisch sortieren
So funktioniert der Import von Python-Modulen
[Python] ModuleNotFoundError: Kein Modul mit dem Namen 'urlparse'
Python
Über das Python-Modul venv
Automatisches Update des Python-Moduls
Python> Wörterbuch / Sammlungen> defaultdict () / Counter ()
Ruby, Installationshandbuch für Python-Module
Python-Debug- und Testmodul
[Python] Anmelden Ihres eigenen Moduls
Eine kurze Zusammenfassung der Python-Sammlung
Zusammenarbeit zwischen Python-Modul und API
Verwenden Sie Blender als Python-Modul
Python 3-Socket-Modul und Socket-Kommunikationsfluss
Führen Sie das Python-Unittest-Modul in vs2017 aus
Veröffentlichtes Python My Number Verification Module
Versuchen Sie es mit dem Python Cmd-Modul
Vergleich der Konvertierungsmodule für ausführbare Python-Dateien 2
Ich suche nach dem Ort des Quecksilber-Python-Moduls
Beherrsche das schwache Ref-Modul in Python
Kafka Python
Python-Zusammenfassung
Eingebaute Python
Python-Einschlussnotation
Python-Technik
Python studieren
Der heutige Python-Fehler: ModuleNotFoundError: Kein Modul benannt
Python 2.7 Countdown
Python FlowFishMaster
Python-Dienst
Python-Tipps
Python-Funktion ①
Python-Grundlagen
Python-Memo
[Python] So zeigen Sie Zufallszahlen an (Zufallsmodul)
Ufo-> Python (3)
Python-Einschlussnotation
Installieren Sie Python
python3 So installieren Sie ein externes Modul
Der heutige Python-Fehler: ModuleNotFoundError: Kein Modul benannt
Übergeben Sie den Pfad des importierten Python-Moduls
Python-Grundlagen ④
Python-Memorandum 2
Python-Memo
Warteschlangen- und Python-Implementierungsmodul "deque"
Python Jinja2
Vergleich japanischer Konvertierungsmodule in Python3
Python-Inkrement
atCoder 173 Python
[Python] -Funktion
Python-Installation
Python installieren 3.4.3.
Python-Modul erstellen [CarSensor API-Unterstützungsmodul csapi]