recherche
Maisondéveloppement back-endTutoriel PythonExplication détaillée de l'utilisation des fonctions de la série items() en Python

Cet article présente principalement l'utilisation de la série de fonctions Dictionary items() en Python. C'est une fonction très pratique. Les amis qui en ont besoin peuvent s'y référer. Dictionary items() série de fonctions en Python avec des exemples d'utilisation, a une bonne valeur de référence pour la programmation Python. L'analyse spécifique est la suivante :

Regardons d'abord un exemple :

La fonction de ce programme est très simple, qui est de générer des
import html  # available only in Python 3.x 
def make_elements(name, value, **attrs): 
  keyvals = [' %s="%s"' % item for item in attrs.items()] 
  attr_str = ''.join(keyvals) 
  element = &#39;<{name}{attrs}>{value}</{name}>&#39;.format( 
      name = name, 
      attrs = attr_str, 
      value = html.escape(value)) 
  return element 
make_elements(&#39;item&#39;, &#39;Albatross&#39;, size=&#39;large&#39;, quantity=6) 
make_elements(&#39;p&#39;, &#39;<spam>&#39;)
balises HTML

. Notez que le module html ne peut être utilisé que dans Uniquement disponible dans Python 3.x. Au début, je viens de remarquer que le type de dictionnaire

variable

des keyvals qui génère la liste de balises attribut est construit de manière intéressante. Deux % correspondent à un. article, donc après avoir vérifié les informations pertinentes, j'ai découvert beaucoup de choses, que je vais résumer ici. Remarque : Pour les versions utilisées par tous les interpréteurs Python ci-dessous, 2.x correspond à 2.7.3, et 3.x correspond à 3.4.1

Dans Python 2.x, éléments de la documentation officielle La méthode est la suivante : générer une liste de paires (clé, valeur), comme celle-ci :


Dans le processus de recherche de
>>> d = {&#39;size&#39;: &#39;large&#39;, &#39;quantity&#39;: 6} 
>>> d.items() 
[(&#39;quantity&#39;, 6), (&#39;size&#39;, &#39;large&#39;)]
dans

, j'en ai accidentellement vu une. sur stackoverflow Question : Quelle est la différence entre dict.items() et dict.iteritems() ? , la première réponse signifie à peu près ceci : "Au début, items() renvoyait une liste contenant tous les éléments de dict comme ci-dessus, mais comme cela gaspillait trop de mémoire, elle a été ajoutée plus tard (Remarque : le Un groupe de fonctions iteritems(), iterkeys() et itervalues() qui ont commencé à apparaître dans Python 2.2 sont utilisés pour renvoyer un itérateur pour économiser de la mémoire, mais dans 3.x items() renvoie lui-même un tel itérateur. Par conséquent, le <.> le comportement de items() dans 3.x est cohérent avec le comportement de iteritems() dans 2.x, et la fonction iteritems() est supprimée »

Mais c'est plus intéressant Oui, bien que cela. La réponse a été acceptée, les commentaires ci-dessous ont souligné que cette déclaration n'est pas exacte. Le comportement de items() dans 3.x est différent de iteritems() dans 2.x. Il renvoie en fait un objet " protocole de séquence complet . ", cet

objet

peut refléter les changements dans dict. Plus tard, une autre fonction viewitems() a été ajoutée à Python 2.7 et ce comportement dans 3.x Pour être cohérent Pour confirmer les affirmations dans le commentaires, j'ai fait le test suivant, en faisant attention à la version Python utilisée dans le test : Test 1 (Python 2.7.3) :

Test 2 (Python 3.4.1 ):

Python 2.7.3 (default, Feb 27 2014, 19:58:35)  
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> d = {&#39;size&#39;: &#39;large&#39;, &#39;quantity&#39;: 6} 
>>> il = d.items() 
>>> it = d.iteritems() 
>>> vi = d.viewitems() 
>>> il 
[(&#39;quantity&#39;, 6), (&#39;size&#39;, &#39;large&#39;)] 
>>> it 
<dictionary-itemiterator object at 0x7fe555159f18> 
>>> vi 
dict_items([(&#39;quantity&#39;, 6), (&#39;size&#39;, &#39;large&#39;)])
Vous pouvez voir que dans Python 3.x, les deux méthodes iteritems() et viewitems() ont été supprimées, et item() Le résultat obtenu est cohérent avec viewitems() en 2 .x.

Le contenu renvoyé par iteritems() et viewitems() dans 2.x peut être parcouru en utilisant for Comme indiqué ci-dessous

Python 3.4.1 (default, Aug 12 2014, 16:43:01)  
[GCC 4.9.0] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> d = {&#39;size&#39;: &#39;large&#39;, &#39;quantity&#39;: 6} 
>>> il = d.items() 
>>> it = d.iteritems() 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
AttributeError: &#39;dict&#39; object has no attribute &#39;iteritems&#39; 
>>> vi = d.viewitems() 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
AttributeError: &#39;dict&#39; object has no attribute &#39;viewitems&#39; 
>>> il 
dict_items([(&#39;size&#39;, &#39;large&#39;), (&#39;quantity&#39;, 6)])

Quelle est la différence entre les deux ? viewitems() renvoie l'objet view, qui peut refléter les modifications apportées au dictionnaire. Par exemple, dans l'exemple ci-dessus, si vous ajoutez une combinaison clé-valeur à d avant d'utiliser les deux variables it et vi, la différence sera facile à voir. .

>>> for k, v in it: 
...  print k, v 
...  
quantity 6 
size large 
>>> for k, v in vi: 
...  print k, v 
...  
quantity 6 
size large
Dans la troisième ligne, nous avons inséré un nouvel élément dans d, vi peut continuer à parcourir, et le nouveau parcours peut refléter les changements dans d, mais lors du parcours, une erreur est signalée. que la taille du dictionnaire change pendant le parcours et que le parcours échoue.

Pour résumer, dans 2.x, la méthode items() était à l'origine utilisée, mais comme elle gaspillait trop de mémoire, la méthode iteritems() a été ajoutée pour renvoyer un itérateur. la méthode items() a été ajoutée. Le comportement de () a été modifié pour renvoyer un objet de vue, afin que l'objet renvoyé puisse également refléter les modifications apportées au dictionnaire d'origine. En même temps, la fonctionnalité de compatibilité ascendante de viewitems() a été ajoutée. en 2.7.
>>> it = d.iteritems() 
>>> vi = d.viewitems() 
>>> d[&#39;newkey&#39;] = &#39;newvalue&#39; 
>>> d 
{&#39;newkey&#39;: &#39;newvalue&#39;, &#39;quantity&#39;: 6, &#39;size&#39;: &#39;large&#39;} 
>>> vi 
dict_items([(&#39;newkey&#39;, &#39;newvalue&#39;), (&#39;quantity&#39;, 6), (&#39;size&#39;, &#39;large&#39;)]) 
>>> it 
<dictionary-itemiterator object at 0x7f50ab898f70> 
>>> for k, v in vi: 
...  print k, v 
...  
newkey newvalue 
quantity 6 
size large 
>>> for k, v in it: 
...  print k, v 
...  
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
RuntimeError: dictionary changed size during iteration
Donc, dans 3.x, il n'y a pas lieu de s'inquiéter des différences entre les trois, car une seule méthode items() est conservée.

Je crois que les exemples décrits dans cet article ont une certaine valeur de référence pour la programmation Python de chacun.


【Recommandations associées】

1.

Recommandation spéciale

 : Téléchargez la version V0.1 de "php Programmer Toolbox" 2. Tutoriel vidéo Python gratuit

3 Méthode Items() pour une introduction de base à Python

4. Exemple de fonction item() dans le dictionnaire de traversée Python

5.Présentation de trois méthodes d'accès au dictionnaire

6. La différence entre les articles itéri et les articles triés

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!

Déclaration
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
Quelles sont les raisons courantes pour lesquelles un script Python pourrait ne pas s'exécuter sur Unix?Quelles sont les raisons courantes pour lesquelles un script Python pourrait ne pas s'exécuter sur Unix?Apr 28, 2025 am 12:18 AM

Les raisons pour lesquelles les scripts Python ne peuvent pas fonctionner sur les systèmes UNIX incluent: 1) des autorisations insuffisantes, en utilisant Chmod xyour_script.py pour accorder des autorisations d'exécution; 2) Ligne Shebang incorrecte ou manquante, vous devez utiliser #! / Usr / bin / enwpython; 3) Paramètres de variables d'environnement incorrectes, vous pouvez imprimer OS.environ Debogging; 4) En utilisant la mauvaise version Python, vous pouvez spécifier la version sur la ligne Shebang ou la ligne de commande; 5) Problèmes de dépendance, en utilisant un environnement virtuel pour isoler les dépendances; 6) Erreurs de syntaxe, utilisez python-mpy_compileyour_script.py pour détecter.

Donnez un exemple de scénario où l'utilisation d'un tableau Python serait plus appropriée que l'utilisation d'une liste.Donnez un exemple de scénario où l'utilisation d'un tableau Python serait plus appropriée que l'utilisation d'une liste.Apr 28, 2025 am 12:15 AM

L'utilisation de tableaux Python est plus adapté au traitement de grandes quantités de données numériques que les listes. 1) Les tableaux économisent plus de mémoire, 2) les tableaux sont plus rapides pour fonctionner par des valeurs numériques, 3) la cohérence de type de force des tableaux, 4) Les tableaux sont compatibles avec les tableaux C, mais ne sont pas aussi flexibles et pratiques que les listes.

Quelles sont les implications de performances de l'utilisation des listes par rapport aux tableaux dans Python?Quelles sont les implications de performances de l'utilisation des listes par rapport aux tableaux dans Python?Apr 28, 2025 am 12:10 AM

Listes sont une meilleure ancêtres et des datatatates de mix

Comment Numpy gère-t-il la gestion de la mémoire pour les grandes tableaux?Comment Numpy gère-t-il la gestion de la mémoire pour les grandes tableaux?Apr 28, 2025 am 12:07 AM

NumpyManagesMemoryForLargeArraySEfficientlyUsingViews, Copies andMemory-MapyPiles.1) Vues Allowcing withoutcopy

Qui nécessite l'importation d'un module: listes ou tableaux?Qui nécessite l'importation d'un module: listes ou tableaux?Apr 28, 2025 am 12:06 AM

ListSinpythondonoTequireImporttingAmodule, tandis que les listes de la part de la variation de la daymoduleeeedanimport.1)

Quels types de données peuvent être stockés dans un tableau Python?Quels types de données peuvent être stockés dans un tableau Python?Apr 27, 2025 am 12:11 AM

PythonlistScanstoreanyDatatype, ArrayModulearRaySstoreOneType, et NumpyArraysArnumericalComptations.1) ListesaSaSatilebutlessmemory-Efficient.2) NumpyArraySareMory-EfficientForHomoGeneousData.3)

Que se passe-t-il si vous essayez de stocker une valeur du mauvais type de données dans un tableau Python?Que se passe-t-il si vous essayez de stocker une valeur du mauvais type de données dans un tableau Python?Apr 27, 2025 am 12:10 AM

Lorsque vous vous assumez de la valeur de la valeur de la datyypie de la datyylethonarray.

Quelle partie fait partie de la bibliothèque standard Python: listes ou tableaux?Quelle partie fait partie de la bibliothèque standard Python: listes ou tableaux?Apr 27, 2025 am 12:03 AM

PythonlistSaReparmentofthestandardLibrary, tandis que les coloccules de colocède, tandis que les colocculations pour la base de la Parlementaire, des coloments de forage polyvalent, tandis que la fonctionnalité de la fonctionnalité nettement adressée.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft