Cet article vous apporte une brève introduction au module de collecte en Python (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Module de collecte :
Basé sur les types de données intégrés (dict, list, set, tuple), le module de collections fournit également plusieurs types de données supplémentaires : Counter, deque, defaultdict, approvedtuple et OrderedDict, etc.
1:namedtuple
Génère un tuple qui peut utiliser le nom pour accéder au contenu de l'élément
Par exemple : représente une coordonnée
from collections import namedtuple point = namedtuple('point',['x','y']) p=point(1,2) print(p.x) print(p.y)
>>1 >>2
2:deque file d'attente à double extrémité :
La file d'attente à double extrémité peut rapidement ajouter et pousser des objets de l'autre côté.
Lors de l'utilisation d'une liste pour stocker des données, l'accès aux éléments par index est rapide, mais l'insertion et la suppression d'éléments sont très lentes, car la liste est un stockage linéaire, et lorsque la quantité de données est importante, l'efficacité d'insertion et de suppression est très faible
deque est une liste bidirectionnelle pour une mise en œuvre efficace des opérations d'insertion et de suppression, adaptée aux files d'attente et aux piles
from collections import deque q=deque(['a','b','c']) q.append('x') q.appendleft('y') print(q)
>>deque(['y', 'a', 'b', 'c', 'x'])
3 : Compteur compteur
compteur, principalement utilisé pour compter
Le but est de suivre le nombre de fois qu'une valeur sort. Il s'agit d'un type de conteneur non ordonné, stocké sous forme de paires clé-valeur dans un dictionnaire, où l'élément est utilisé comme élément. clé et son décompte est utilisé comme valeur
La valeur du décompte peut être n'importe quel nombre entier (y compris 0 et des nombres négatifs),
crée :
from collections import Counter #创建一个空的类 c=Counter() #从一个可迭代对象中创建 c=Counter('gallahad') #从一个字典对象创建 c=Counter({'a':2,'b':4}) #从一组键值对创建 c=Counter(a=2,b=4)
Accès à la valeur du décompte avec clés manquantes
Lorsque la clé accédée n'existe pas, renvoie 0 à la place KeyError; sinon renvoie son compte
Accès à la valeur du compte
c=Counter('gallahad') print(c['a']) print(c['z']) >>3 >>0
Mise à jour du compteur (mettre à jour et soustraire )
Vous pouvez utiliser un objet itérable ou un autre objet compteur pour mettre à jour les paires clé-valeur
mettre à jour les incréments
c=Counter('gallahad') c.update('chengzheng') print(c['e']) >>2 d=Counter('holloword') c.update(d) print(c['l']) >>4
soustraire les décréments
c=Counter('gallahad') c.subtract('g') print(c['g']) >>0 d=Counter('all') c.subtract(d) print(c['l']) >>0
modifications et suppressions de touches
lors du comptage Lorsque la valeur est 0, cela ne signifie pas que l'élément est supprimé. Pour supprimer des éléments, vous devez utiliser del
c=Counter('gallahad') print(c) c['a']=0 print(c) del c['l'] print(c) >>Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1}) >>Counter({'l': 2, 'g': 1, 'h': 1, 'd': 1, 'a': 0}) >>Counter({'g': 1, 'h': 1, 'd': 1, 'a': 0})
éléments. ():
pour renvoyer un itérateur. Le nombre de fois qu'un élément est répété correspond au nombre de fois où l'élément est contenu dans l'itérateur. Les éléments ne sont pas disposés dans un ordre défini et les éléments portant un nombre inférieur à 1 ne sont pas inclus.
c =Counter(a=4,b=2,c=0,d=-2) a =list(c.elements()) print(a) >>['a', 'a', 'a', 'a', 'b', 'b']
most_common() :
Renvoie une liste des premiers (n). Si n n'est pas spécifié, tous les éléments sont renvoyés. Lorsque plusieurs éléments ont la même valeur de comptage, l'arrangement n'est pas ordonné
c =Counter('xsgffikgkhgdyrduykkf') a =c.most_common(3) print(a)
Autres opérations :
sum(c.values()) # 所有计数的总数 c.clear() # 重置Counter对象,注意不是删除 list(c) # 将c中的键转为列表 set(c) # 将c中的键转为set dict(c) # 将c中的键值对转为字典 c.items() # 转为(elem, cnt)格式的列表 Counter(dict(list_of_pairs)) # 从(elem, cnt)格式的列表转换为Counter类对象 c.most_common()[:-n:-1] # 取出计数最少的n个元素 c += Counter() # 移除0和负值
4 : OrderdDict Dictionnaire ordonné
En utilisant un dictionnaire (dict), les clés ne sont pas ordonnées Lors d'une itération sur le dictionnaire, nous ne pouvons pas déterminer l'ordre des clés.
Si vous souhaitez que les clés soient en ordre, vous pouvez utiliser OrderdDict
à partir des collections import OrderedDict
d=dict([('a',1),('b',2),('c',3)]) print(d) od=OrderedDict([('a',1),('b',2),('c',3)]) print(od) >>{'c': 3, 'b': 2, 'a': 1} >>OrderedDict([('a', 1), ('b', 2), ('c', 3)])
Remarque : OrderdDict est trié dans l'ordre de insertion, non trié en fonction de la clé elle-même.
od=OrderedDict([('a',1),('c',3),('b',2)]) print(od) >>OrderedDict([('a', 1), ('c', 3), ('b', 2)])
5:defaultdict : dictionnaire avec des valeurs par défaut
Exemple :
a la valeur suivante définie [11,22,33,44,55,66 , 77,88,99,90...], enregistrez toutes les valeurs supérieures à 66 dans la première clé du dictionnaire et enregistrez les valeurs inférieures à 66 dans la valeur de la deuxième clé.
C'est-à-dire : {'k1' : supérieur à 66, 'k2' : inférieur à 66>
à partir des collections import defaultdict
values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) for value in values: if value>66: my_dict['k1'].append(value) else: my_dict['k2'].append(value) print(my_dict)
>>defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!