Comptez le nombre de fois que deux valeurs apparaissent simultanément dans un élément de type itérateur Python 3

Code qui compte le nombre de fois où deux éléments d'un élément de type itérateur (liste ou tapple) apparaissent en même temps. C'est aussi un exemple de code de sorted avec une combinaison d'éléments de type itérateur (ʻitertools.combination), un ensemble immuable ( frozenset`) et une clé.

code

count_colocation2.py


import itertools
import typing
from itertools import chain


def count_colocation2(
        iteriter: typing.Iterable
        ) -> typing.Dict[frozenset, int]:
    """
Comptez le nombre de fois où deux éléments d'un élément de type itérateur (liste ou tapple) apparaissent en même temps.
    """
    if not isinstance(iteriter, typing.Iterable):
        raise TypeError()
    #Préparez la combinaison
    comb = itertools.combinations(frozenset(chain.from_iterable(iteriter)), 2)
    comb = [frozenset(item) for item in comb]
    #Vérifier dans l'ordre et ajouter le nombre de combinaisons
    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)
#Trier les valeurs par ordre décroissant
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)]
"""

Remarques

frozenset frozenset est une version immuable de set. Vous pouvez changer le contenu de set avec ʻadd ou ʻupdate, mais vous ne pouvez pas changer le contenu de ensemble gelé. D'autre part, frozenset peut être utilisé comme clé de dictionnaire car il peut obtenir le hachage.

#Ne pas commenter la ligne suivante entraînera une erreur.
# print(hash(set(["a", "b", "c"])))
# TypeError: unhashable type: 'set'

#Il se termine normalement.
print(hash(frozenset(["a", "b", "c"])))

Il y a «tuple» dans le type immuable qui peut être la clé du même dictionnaire. «tuple» distingue l'ordre des éléments, mais «frozenset» ne le fait pas.

typing.Sequencetyping.Iterable Python a des classes comme «list», «tuple», «set» et «frozenset», mais celles-ci peuvent être catégorisées par des fonctionnalités communes. list et tuple sont classés comme type de séquence ( typing.Sequence) car ils sont accessibles par index. De plus, «list», «tuple», «set» et «frozenset» sont classés comme «typing.Iterable» car ils fournissent des itérateurs.

typing.Sequence et typing.Iterable sont définis comme des types et peuvent être utilisés dans les indices de type, ainsi que dans ʻis instance et ʻis sous-classe.

Liste des tapples combinés de type itérateur

ʻItertools.combinations vous permet de créer une liste de n'importe quel nombre de combinaisons à partir d'éléments de type (typing.Iterable`).

Accès aux éléments de set / fixed set

set / frozenset n'est pas accessible à l'index [index]. Vous pouvez y accéder en le convertissant une fois en list ou tuple aveclist ()outuple (). Puisqu'il s'agit d'un type itérateur, «for» peut être utilisé.

Tri non destructif des dictionnaires

Vous pouvez spécifier une expression lambda pour key = ... dans sorted () pour trier le dictionnaire de manière non destructive. Notez que les paires clé / valeur du dictionnaire sont récupérées avec dict.items (). Si vous passez dict lui-même à sorted, le nom de la clé sera la cible desorted ().

Trier par clé


sorted(dict.items(), key=lambda item: item[0])                #ordre croissant
sorted(dict.items(), key=lambda item: item[0], reverse=True)  #Ordre décroissant

Trier par valeur


sorted(dict.items(), key=lambda item: item[1])                #ordre croissant
sorted(dict.items(), key=lambda item: item[1], reverse=True)  #Ordre décroissant

Recommended Posts

Comptez le nombre de fois que deux valeurs apparaissent simultanément dans un élément de type itérateur Python 3
Obtenez une instance datetime à tout moment de la journée en Python
Transformez plusieurs listes avec l'instruction for en même temps en Python
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse de code Python --1.2 Compter le nombre des mêmes caractères
Obtenez le nombre d'éléments spécifiques dans la liste python
[Homologie] Comptez le nombre de trous dans les données avec Python
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Comptez bien le nombre de caractères thaïlandais et arabes en Python
Une fonction qui mesure le temps de traitement d'une méthode en python
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
python Remarque: enumerate () -Obtenir l'index et l'élément de la liste en même temps et tourner pour l'instruction
[python] [meta] Le type de python est-il un type?
Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python
[Python] Comment ouvrir deux fichiers ou plus en même temps
4 méthodes pour compter le nombre d'occurrences d'entiers dans un certain intervalle (y compris la méthode imos) [implémentation Python]
traitement (python) Diagramme les coordonnées de la liste Spécifiez le nombre de fois dans draw ()
Récupérer l'appelant d'une fonction en Python
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
[Python] Précautions lors de la recherche des valeurs maximum et minimum avec un tableau numpy avec un petit nombre d'éléments
Copiez la liste en Python
Vérifiez le nombre de fois où la requête (sql) a été lancée dans django avec un test
Trouvez le nombre de jours dans un mois
Comparez la somme de chaque élément dans deux listes avec la valeur spécifiée en Python
Conversion de type de plusieurs colonnes de pandas DataFrame avec un type en même temps
Boucle les variables en même temps dans le modèle
Sortie sous la forme d'un tableau python
Au moment de la mise à jour de python avec ubuntu
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Python] Un programme qui trouve le nombre d'étapes le plus court dans un jeu qui traverse les nuages
[Python] Représentation du nombre de plaintes des compagnies d'assurance-vie dans un graphique à barres
Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)
Vérifiez si la chaîne est un nombre en python
[Python] Un programme qui compte le nombre de vallées
Comment obtenir le nombre de chiffres en Python
Comptez le nombre de paramètres dans le modèle d'apprentissage en profondeur
Obtenir la taille (nombre d'éléments) de Union Find en Python
Tâches au démarrage d'un nouveau projet python
Afficher un histogramme des valeurs de luminosité de l'image en python
Un mémorandum sur la mise en œuvre des recommandations en Python
J'ai essayé de créer un Discord Bot sur Docker qui signale le nombre de personnes infectées par corona à Tokyo à un moment spécifié
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Fonction intégrée Python ~ divmod ~ Obtenons le quotient et le reste de la division en même temps
Découvrez la largeur apparente d'une chaîne en python
Créer un tableau de multiplication de chaque élément dans une feuille de calcul (Python)
Différent du type d'importation de python. Signification de depuis A import B
Grep pour que grep n'apparaisse pas au moment de grep
Comptez le nombre de caractères dans le texte dans le presse-papiers sur Mac
Python --Trouvez le nombre de groupes dans l'expression regex
[Note] Importation de fichiers dans le répertoire parent en Python
Obtenez le nombre d'occurrences pour chaque élément de la liste
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Obtenez l'index de chaque élément de la matrice de confusion en Python
Script Python qui compare le contenu de deux répertoires
Python - Vérifiez le type de valeurs
Mettre le processus en veille pendant un certain temps (secondes) ou plus en Python
J'ai comparé le temps de calcul de la moyenne mobile écrite en Python
[Python 3.8 ~] Réécrire des tableaux etc. en même temps que la définition [astuces]
[Python] Réduisons le nombre d'éléments dans le résultat dans le fonctionnement de l'ensemble