Maison  >  Article  >  développement back-end  >  Comment utiliser les listes de dictionnaires Python

Comment utiliser les listes de dictionnaires Python

php中世界最好的语言
php中世界最好的语言original
2018-04-09 17:54:172121parcourir

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

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"))

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")
  ]

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']}

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)

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)

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': []}

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")

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)

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)

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}

相信看了本文案例你已经掌握了方法,更多精彩请关注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!

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