Zählen Sie, wie oft zwei Werte gleichzeitig in einem Element vom Typ Python 3-Iterator angezeigt werden

Code, der zählt, wie oft zwei Elemente in einem Element vom Typ Iterator (Liste oder Tapple) gleichzeitig angezeigt werden. Es ist auch ein Beispielcode von "sortiert" mit einer Kombination von Elementen vom Typ Iterator ("itertools.combination"), einer unveränderlichen Menge ("frozenset") und einem Schlüssel.

Code

count_colocation2.py


import itertools
import typing
from itertools import chain


def count_colocation2(
        iteriter: typing.Iterable
        ) -> typing.Dict[frozenset, int]:
    """
Zählen Sie, wie oft zwei Elemente in einem Element vom Typ Iterator (Liste oder Tapple) gleichzeitig angezeigt werden.
    """
    if not isinstance(iteriter, typing.Iterable):
        raise TypeError()
    #Bereiten Sie die Kombination vor
    comb = itertools.combinations(frozenset(chain.from_iterable(iteriter)), 2)
    comb = [frozenset(item) for item in comb]
    #Überprüfen Sie die Reihenfolge und fügen Sie die Anzahl der Kombinationen hinzu
    d = {key: 0 for key in comb}
    for entry in iteriter:
        for pair in comb:
            t = tuple(pair)
            if t[0] in entry and t[1] in entry:
                d[pair] += 1
    return d

1.py


from pprint import pp

from count_colocation2 import count_colocation2

ll = [
        ["a", "b", "c"],
        ["d", "e", "f"],
        ["a", "d", "f"],
        ["b", "d", "f"],
    ]

coloc2 = count_colocation2(ll)
#Sortieren Sie die Werte in absteigender Reihenfolge
pp(sorted(coloc2.items(), key=lambda item: item[1], reverse=True))

"""
[(frozenset({'f', 'd'}), 3),
 (frozenset({'f', 'e'}), 1),
 (frozenset({'f', 'b'}), 1),
 (frozenset({'f', 'a'}), 1),
 (frozenset({'d', 'e'}), 1),
 (frozenset({'d', 'b'}), 1),
 (frozenset({'d', 'a'}), 1),
 (frozenset({'b', 'a'}), 1),
 (frozenset({'b', 'c'}), 1),
 (frozenset({'a', 'c'}), 1),
 (frozenset({'f', 'c'}), 0),
 (frozenset({'b', 'e'}), 0),
 (frozenset({'e', 'a'}), 0),
 (frozenset({'e', 'c'}), 0),
 (frozenset({'d', 'c'}), 0)]
"""

Bemerkungen

frozenset frozenset ist eine unveränderliche Version von set. Sie können den Inhalt von "set" mit "add" und "update" ändern, aber Sie können den Inhalt von "gefrorenem Set" nicht ändern. Andererseits kann "frozenset" als Wörterbuchschlüssel verwendet werden, da es den Hash erhalten kann.

#Das Kommentieren der nächsten Zeile führt zu einem Fehler.
# print(hash(set(["a", "b", "c"])))
# TypeError: unhashable type: 'set'

#Es wird normal abgeschlossen.
print(hash(frozenset(["a", "b", "c"])))

Der unveränderliche Typ enthält ein Tupel, das der Schlüssel desselben Wörterbuchs sein kann. tuple unterscheidet die Reihenfolge der Elemente , frozenset jedoch nicht.

typing.Sequencetyping.Iterable Python hat Klassen wie "list", "tuple", "set" und "frozenset", aber diese können nach allgemeinen Funktionen kategorisiert werden. list und tuple werden als Sequenztyp ( typing.Sequence) klassifiziert, da über den Index auf sie zugegriffen werden kann. Außerdem werden "list", "tuple", "set" und "frozenset" als "typing.Iterable" klassifiziert, da sie Iteratoren bereitstellen.

typing.Sequence und typing.Iterable sind als Typen definiert und können in Typhinweisen sowie in isinstance und issubclass verwendet werden.

Liste der Kombinations-Tapples vom Typ Iterator

Mit itertools.combinations können Sie eine Liste mit einer beliebigen Anzahl von Kombinations-Tapples aus Elementen des Typs ( typing.Iterable) erstellen.

Zugriff auf die Elemente von "Set" / "Frozen Set"

set / frozenset ist unter index[index]nicht zugänglich. Sie können darauf zugreifen, indem Sie es einmal mit "list ()" oder "tuple ()" in "list" oder "tuple" konvertieren. Da es sich um einen Iteratortyp handelt, kann "for" verwendet werden.

Zerstörungsfreie Sortierung von Wörterbüchern

Sie können einen Lambda-Ausdruck in "key = ..." von "sortiert ()" angeben, um das Wörterbuch zerstörungsfrei zu sortieren. Beachten Sie, dass die Wörterbuchschlüssel / Wert-Paare mit "dict.items ()" abgerufen werden. Wenn Sie "dict" selbst an "sorted" übergeben, ist der Schlüsselname das Ziel von "sorted ()".

Nach Schlüssel sortieren


sorted(dict.items(), key=lambda item: item[0])                #aufsteigende Reihenfolge
sorted(dict.items(), key=lambda item: item[0], reverse=True)  #absteigende Reihenfolge

Nach Wert sortieren


sorted(dict.items(), key=lambda item: item[1])                #aufsteigende Reihenfolge
sorted(dict.items(), key=lambda item: item[1], reverse=True)  #absteigende Reihenfolge

Recommended Posts

Zählen Sie, wie oft zwei Werte gleichzeitig in einem Element vom Typ Python 3-Iterator angezeigt werden
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Drehen Sie in Python mehrere Listen mit for-Anweisung gleichzeitig
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
So zählen Sie die Anzahl der Vorkommen jedes Elements in der Liste in Python mit der Gewichtung
Beispiel für die Antwort auf den Python-Code --1.2 Zählen Sie die Anzahl der gleichen Zeichen
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Zählen Sie die Anzahl der thailändischen und arabischen Zeichen in Python gut
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
python Hinweis: enumerate () - Index und Element der Liste gleichzeitig abrufen und zur Anweisung wenden
[Python] [Meta] Ist der Python-Typ ein Typ?
Überprüfen Sie die speicherinterne Byte-Zeichenfolge der Gleitkommazahl in Python
[Python] So öffnen Sie zwei oder mehr Dateien gleichzeitig
4 Methoden zum Zählen der Anzahl von Ganzzahlen in einem bestimmten Intervall (einschließlich der imos-Methode) [Python-Implementierung]
Verarbeitung (Python) Diagramm der Koordinaten der Liste Geben Sie an, wie oft in draw ()
Holen Sie sich den Aufrufer einer Funktion in Python
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
[Python] Vorsichtsmaßnahmen beim Ermitteln der Maximal- und Minimalwerte mit einem Numpy-Array mit einer kleinen Anzahl von Elementen
Kopieren Sie die Liste in Python
Überprüfen Sie mit einem Test, wie oft die Abfrage (SQL) in Django ausgelöst wurde
Finden Sie die Anzahl der Tage in einem Monat
Vergleichen Sie die Summe jedes Elements in zwei Listen mit dem in Python angegebenen Wert
Typkonvertierung mehrerer Spalten von Pandas DataFrame mit Astype gleichzeitig
Schleifen Sie gleichzeitig Variablen in der Vorlage
Ausgabe in Form eines Python-Arrays
Zum Zeitpunkt des Python-Updates mit Ubuntu
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Python] Ein Programm, das die kürzeste Anzahl von Schritten in einem Spiel findet, das Wolken überquert
[Python] Darstellung der Anzahl der Beschwerden von Lebensversicherungsunternehmen in einem Balkendiagramm
Überprüfen Sie die Verarbeitungszeit und die Anzahl der Aufrufe für jeden Prozess mit Python (cProfile).
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
[Python] Ein Programm, das die Anzahl der Täler zählt
So ermitteln Sie die Anzahl der Stellen in Python
Zählen Sie die Anzahl der Parameter im Deep-Learning-Modell
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
Aufgaben zu Beginn eines neuen Python-Projekts
Zeigen Sie ein Histogramm der Bildhelligkeitswerte in Python an
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
In Python integrierte Funktion ~ divmod ~ Lassen Sie uns gleichzeitig den Quotienten und den Rest der Division erhalten
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Erstellen Sie eine Multiplikationstabelle für jedes Element in einer Tabelle (Python).
Anders als der Importtyp von Python. Bedeutung von aus A Import B.
Grep, damit grep zum Zeitpunkt von grep nicht angezeigt wird
Zählen Sie die Anzahl der Zeichen im Text in der Zwischenablage auf dem Mac
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Ermitteln Sie die Anzahl der Vorkommen für jedes Element in der Liste
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Ruft den Index jedes Elements der Verwirrungsmatrix in Python ab
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
Python --Überprüfen Sie den Wertetyp
Schlafverarbeitung für einen bestimmten Zeitraum (Sekunden) oder länger in Python
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
[Python 3.8 ~] Schreiben Sie Arrays usw. gleichzeitig mit der Definition neu [Tipps]
[Python] Lassen Sie uns die Anzahl der Elemente im Ergebnis bei der Operation des Sets reduzieren