Maison  >  Article  >  développement back-end  >  Comment définir la valeur par défaut en utilisant defaultdict en Python ?

Comment définir la valeur par défaut en utilisant defaultdict en Python ?

WBOY
WBOYavant
2023-04-26 17:07:091313parcourir

Préface

Lors de la recherche d'une certaine valeur dans le dictionnaire, si la clé n'existe pas, une erreur keyerror sera renvoyée au lieu d'une valeur par défaut. renvoyer une valeur par défaut Vous pouvez utiliser la fonction defaultdict. Defaultdict est une sous-classe de la classe dict intégrée de Python. Elle a la même fonction que dict, mais elle a une valeur par défaut et renvoie une valeur par défaut si la valeur clé n'existe pas. defaultdict函数。 defaultdict是python内建dict类的一个字类,功能与dict相同,但它带有一个默认的值,若key值不存在时返回一个默认的值。

语法

dict =defaultdict( factory_function)

defaultdict可以接受一个工厂函数作为参数,其中factory_function

Syntax

l=['A','B','C','D']
di={}

for i in l:
    print(i) # 'A
    di[i]+=1 # KeyError: 'A'

print(di)

defaultdict peut accepter une fonction d'usine comme paramètre, où factory_function peut être a list , set, str, etc., la fonction consiste à renvoyer la valeur par défaut d'une fonction d'usine lorsque ket n'existe pas. Par exemple, list correspond à [ ], str correspond à la chaîne vide, set correspond à set(). , et int correspond à 0.

L'utilisation normale de dict est la suivante :

from collections import defaultdict
dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict4[1] = 666
dict4[2] = 888
print(dict1[0]) # 0
print(dict2[0]) # set()
print(dict3[0]) # 
print(dict4[0]) # []
print(dict4[1]) # 666
print("*" * 30)
print(dict1) # defaultdict(<class &#39;int&#39;>, {0: 0})
print(dict2) # defaultdict(<class &#39;set&#39;>, {0: set()})
print(dict3) # defaultdict(<class &#39;str&#39;>, {0: &#39;&#39;})
print(dict4) # defaultdict(<class &#39;list&#39;>, {1: 666, 2: 888, 0: []})

Utiliser defaultdict()

lst = [&#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;e&#39;]
dic = {}
 
for i in lst:
    dic.setdefault(i, 0)
    dic[i] += 1
print(dic)# {&#39;A&#39;: 1, &#39;B&#39;: 1, &#39;C&#39;: 1, &#39;D&#39;: 1, &#39;e&#39;: 1}
#🎜🎜 #La différence entre setdefault() et defaultdict()

dict.setdefault() a deux paramètres, le premier est le paramètre, le second est la valeur par défaut#🎜 🎜## 🎜🎜#
dic1 = {"A": "a", "B": "b"}
x = dic1.get("E", "e")
print(x) # e
print(dic1) # {&#39;A&#39;: &#39;a&#39;, &#39;B&#39;: &#39;b&#39;}
 
dic2 = {"C": "c", "D": "d"}
y = dic2.setdefault("E", &#39;e&#39;)
print(y) # e
print(dic2) # {&#39;C&#39;: &#39;c&#39;, &#39;D&#39;: &#39;d&#39;, &#39;E&#39;: &#39;e&#39;}

setdefault()

setdefault() est une méthode d'instance du dictionnaire, recevant deux paramètres. Son utilisation est similaire à la méthode get() du dictionnaire. , mais c'est mieux que la méthode get() Plus puissante. Les deux définissent une valeur par défaut pour la clé du dictionnaire.

La différence entre les deux est la suivante : la valeur par défaut définie par la méthode get ne modifiera pas le dictionnaire d'origine, tandis que la valeur par défaut définie par setdefault modifiera la valeur du dictionnaire d'origine.

Remarque : lors de l'utilisation de dict[key]=value, une erreur sera signalée si la clé n'existe pas ; lors de l'utilisation de dict.get(key), si la clé n'existe pas ; , une valeur par défaut sera renvoyée.

from collections import defaultdict
 
lst = [("A", "1"), ("B", "1"), ("A", "2"), ("B", "2"), ("A", "3"), ("B", "3")]
dic = defaultdict(list)
print(dic)
for key, value in lst:
    dic[key].append(value)
print(dic)
print(type(dic))
for key, value in dic.items():
    print(key, value)

defaultdict()

defaultdict est une fonction d'usine sous le module collections, utilisée pour créer des objets de dictionnaire et reçoit un objet de fonction (appelable) comme paramètres. Quel est le type renvoyé par le paramètre et quel type est la valeur correspondant à la clé.

rrreeeComment définir la valeur par défaut en utilisant defaultdict en Python ?

#🎜🎜#

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer