2016-05-18 1 views
-3

I et implémentation d'une algo Data Mining. Je dont mon plus petit objet est un ensemble. Un ensemble peut contenir un seul élément ou plusieurs éléments (Itemset). Je dois compter les occurrences de ces jeux dans un dictionnaire comme:Python: Création d'un dictionnaire avec une clé en tant qu'ensemble et valeur en tant que nombre

Dict={set([<some items>] : count)}

je besoin d'un tel type de données pour les raisons suivantes:

  1. Ordre des éléments dans un ensemble n'est pas considéré (item1, item2, item3 même que item2, item3, item1 et ainsi de suite ...)
  2. L'ajout d'un ensemble à un dictionnaire éviterait la répétition des clés.
  3. Stocke le nombre dans la même structure de données avec le jeu d'éléments.

Pouvez-vous s'il vous plaît suggérer un moyen le plus simple de réaliser cela en python.

Répondre

2

Vous pouvez utiliser Counter avec frozenset comme clés:

from collections import Counter 

items = [ 
    [1, 2, 3], 
    [1, 2], 
    [3, 2, 1] 
] 

c = Counter(frozenset(x) for x in items) 
print(c) # Counter({frozenset([1, 2, 3]): 2, frozenset([1, 2]): 1})