Comment utiliser les listes de dictionnaires Python

php中世界最好的语言
Libérer: 2018-04-09 17:54:17
original
2168 Les gens l'ont consulté

Cette fois je vais vous montrer comment utiliser la liste de dictionnaires Python, et quelles sont les précautions d'utilisation de la liste de dictionnaires Python Voici un cas pratique, prenons un. regarder.

1. Utilisez le mot-clé in pour vérifier si la clé existe

Il existe une philosophie de développement dans le Zen de Python :

Il devrait y en avoir une - et de préférence une seule - manière évidente de le faire.

Essayez de trouver une, de préférence une seule - manière évidente de le faire. En Python2, vous pouvez utiliser la méthode has_key pour déterminer si une clé existe dans le dictionnaire. Une autre façon consiste à utiliser le mot-clé in. Cependant, il est fortement recommandé d'utiliser cette dernière, car in est traité plus rapidement. Une autre raison est que la méthode has_key a été supprimée dans Python3. Si vous souhaitez être compatible avec les versions py2 et py3 du code, l'utilisation de in est la meilleure. choix.

bad
d = {'name': 'python'}
if d.has_key('name'):
  pass
good
if 'name' in d:
  pass
Copier après la connexion

2. Utilisez get pour obtenir la valeur dans le dictionnaire

Concernant l'obtention de la valeur dans le dictionnaire, un moyen simple consiste à utiliser d[x] pour accéder à l'élément value, mais dans ce cas une erreur KeyError sera signalée si la clé n'existe pas. Bien sûr, vous pouvez d'abord utiliser l'opération in pour vérifier si la clé est dans le dictionnaire puis l'obtenir, mais cette méthode. n'est pas conforme à ce qui est dit dans le Zen de Python :

Simple vaut mieux que complexe.
Plat vaut mieux qu'imbriqué.

Un bon code doit être simple et facile à comprendre, et une structure de code plate est plus lisible. Nous pouvons utiliser la méthode get au lieu de if... else

bad
d = {'name': 'python'}
if 'name' in d:
  print(d['hello'])
else:
  print('default')
good
print(d.get("name", "default"))
Copier après la connexion

3. Utilisez setdefault pour définir la valeur par défaut de la clé qui n'existe pas dans le dictionnaire

data = [
    ("animal", "bear"),
    ("animal", "duck"),
    ("plant", "cactus"),
    ("vehicle", "speed boat"),
    ("vehicle", "school bus")
  ]
Copier après la connexion

Lorsque vous effectuez des statistiques de classification, vous espérez classer le même type de données dans un certain type dans le dictionnaire. Par exemple, le code ci-dessus réassemble le même type de choses sous la forme d'une liste pour en obtenir un nouveau. dictionnaire

groups = {}
>>> 
{'plant': ['cactus'], 
 'animal': ['bear', 'duck'], 
 'vehicle': ['speed boat', 'school bus']}
Copier après la connexion

La méthode courante consiste d'abord à déterminer si la clé existe déjà. Si elle n'existe pas, initialisez-la avec une liste objet puis effectuez les opérations suivantes. Une meilleure façon consiste à utiliser la méthode setdefault dans le dictionnaire.

bad
for (key, value) in data:
  if key in groups:
    groups[key].append(value)
  else:
    groups[key] = [value]
good
groups = {}
for (key, value) in data:
  groups.setdefault(key, []).append(value)
Copier après la connexion

La fonction de setdefault est :

Si la clé existe dans le dictionnaire, alors la valeur correspondante est renvoyée directement, ce qui est équivalent à la méthode get

Si la clé n'existe pas dans le dictionnaire, le deuxième paramètre de setdefault sera utilisé comme valeur de la clé, puis la valeur sera renvoyée.

4. Initialisez l'objet dictionnaire avec defaultdict

Si vous ne voulez pas que d[x] signale une erreur lorsque x n'existe pas, en plus d'utiliser la méthode get lors de l'obtention d'éléments, une autre façon consiste à utiliser defaultdict dans le module collections et à spécifier une fonction lors de l'initialisation du dictionnaire. En fait, defaultdict est une sous-classe de dict.

from collections import defaultdict
groups = defaultdict(list)
for (key, value) in data:
  groups[key].append(value)
Copier après la connexion

Lorsque la clé n'existe pas dans le dictionnaire, la fonction list sera appelée et renverra une liste vide à attribuer à d[key]. appeler d[k] et signaler une erreur.

5. Utilisez fromkeys pour convertir la liste en dictionnaire

keys = {'a', 'e', 'i', 'o', 'u' }
value = []
d = dict.fromkeys(keys, value)
print(d)
>>>
{'i': [], 'u': [], 'e': [], 
 'a': [], 'o': []}
Copier après la connexion

6. Utilisez un dictionnaire pour implémenter switch . .. instruction case

Il n'y a pas d'instruction switch... case en Python Oncle Turtle, le père de Python, a déclaré que cette syntaxe n'existait pas dans le passé, n'existe pas maintenant, et n’existera pas dans le futur. Parce que la syntaxe concise de Python peut être implémentée en utilisant if ... elif. S'il y a trop de jugements de branche, vous pouvez également utiliser un dictionnaire à la place.

if arg == 0:
  return 'zero'
elif arg == 1:
  return 'one'
elif arg == 2:
  return "two"
else:
  return "nothing"
good
data = {
  0: "zero",
  1: "one",
  2: "two",
}
data.get(arg, "nothing")
Copier après la connexion

7. Utilisez iteritems pour itérer les éléments du dictionnaire

Python propose plusieurs façons d'itérer les éléments du dictionnaire. La première consiste à utiliser le. Méthode items :

d = {
  0: "zero",
  1: "one",
  2: "two",
}
for k, v in d.items():
  print(k, v)
Copier après la connexion

La méthode items renvoie un objet liste composé de (clé, valeur). L'inconvénient de cette méthode est que lors de l'itération d'un très grand dictionnaire, la mémoire s'agrandira instantanément deux fois car la liste. object will Tous les éléments sont chargés en mémoire. Une meilleure façon est d'utiliser iteritems

for k, v in d.iteritems():
  print(k, v)
Copier après la connexion

iteritems renvoie un objet itérateur. L'objet itérateur a les caractéristiques d'un chargement paresseux. La valeur n'est générée que lorsqu'elle est réellement. Cette méthode ne nécessite pas de mémoire supplémentaire pour charger ces données pendant le processus d'itération. Notez que dans Python3, il n’existe que la méthode items, qui est équivalente à iteritems dans Python2, et que le nom de la méthode iteritems a été supprimé.

8. Utiliser la dérivation par dictionnaire

推导式是个绝妙的东西,列表推导式一出,map、filter等函数黯然失色,自 Python2.7以后的版本,此特性扩展到了字典和集合身上,构建字典对象无需调用 dict 方法。

bad
numbers = [1,2,3]
d = dict([(number,number*2) for number in numbers])
good
numbers = [1, 2, 3]
d = {number: number * 2 for number in numbers}
Copier après la connexion

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Python中怎样把矩阵转换为列表

Python连接MySQL的方式总结

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!