Une brève introduction au module de collection en python (avec des exemples)

不言
Libérer: 2018-09-25 16:52:51
original
3116 Les gens l'ont consulté

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)
Copier après la connexion
>>1
>>2
Copier après la connexion

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)
Copier après la connexion
>>deque(['y', 'a', 'b', 'c', 'x'])
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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})
Copier après la connexion

é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']
Copier après la connexion

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)
Copier après la connexion

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和负值
Copier après la connexion

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)])
Copier après la connexion


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)])
Copier après la connexion

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)
Copier après la connexion
>>defaultdict(<class &#39;list&#39;>, {&#39;k2&#39;: [11, 22, 33, 44, 55, 66], &#39;k1&#39;: [77, 88, 99, 90]})
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal