Heim >Backend-Entwicklung >Python-Tutorial >Pythons Operationsmethode für die Struktur des Diktatwörterbuchs
In diesem Artikel wird hauptsächlich die Funktionsweise der Wörterbuchstruktur von Python vorgestellt. Die Funktionsweise des Wörterbuchs ist das Grundwissen für den Einstieg in das Python-Wörterbuch Methode
1. Erstellen Sie ein neues Wörterbuch
1), erstellen Sie ein leeres Wörterbuch
>>> dict1={} >>> dict2=dict() >>> dict1,dict2 ({}, {})2), initialisieren Sie einen Wert, wenn Sie einen neuen erstellen
>>> dict1={1:'a',2:'b',3:'c'} >>> dict1 {1: 'a', 2: 'b', 3: 'c'}3), verwenden Sie Tupel
>>> dict1=dict([(1,'a'),(2,'b'),(3,'c')]) >>> dict1 {1: 'a', 2: 'b', 3: 'c'}
2 Beschaffungsmethode
1), get(key) Holen Sie sich einen von der Wörterbuch Der dem Schlüssel entsprechende Wert gibt Wert zurück
>>> dict1={1:'a',2:'b',3:'c'} >>> dict1.get(1) 'a'Wenn er nicht im Wörterbuch vorhanden ist, a NoneType
wird zurückgegeben
>>> type(dict1.get(4)) <type 'NoneType'>Wenn der erforderliche Schlüsselwert nicht vorhanden ist, geben Sie einen anderen zurückzugebenden Wert an
>>> dict1.get(4,'not found') 'not found'2),keys() Alle Schlüsselwerte im Wörterbuch abrufen und eine Liste zurückgeben
>>> dict1.keys() [1, 2, 3]3), Werte () Entspricht der Methode „keys()“, die zurückgegebene Liste aller Werte im Wörterbuch
>>> dict1.values() ['a', 'b', 'c']4), items() gibt ein (Schlüssel, Wert) entsprechendes Tupel zurück
>>> dict1.items() [(1, 'a'), (2, 'b'), (3, 'c')]5), iterkeys(), itervalues() , iteritems() erhält auch alle Schlüssel bzw. Werte, (Schlüssel, Wert) Tupel, gibt aber keine Liste mehr zurück, sondern einen Iterator
>>> for key in dict1.iterkeys(): print key 1 2 33. Wörterbuchwert festlegen Die Methode
1), die direkte Methode ist
>>> dict1[4]='d' >>> dict1 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}Bei dieser Methode wird jedoch der ursprüngliche Wert überschrieben, wenn der Schlüsselwert, den ich hinzufügen möchte, bereits im Wörterbuch vorhanden ist
>>> dict1[4]='e' >>> dict1 {1: 'a', 2: 'b', 3: 'c', 4: 'e'}2), setdefault (Schlüssel, Wert) Der Vorteil dieser Methode besteht darin, dass der eingefügte Schlüssel, wenn er nicht im Wörterbuch vorhanden ist, in das Wörterbuch eingefügt und der Wert zurückgegeben wird. Wenn es im Wörterbuch vorhanden ist, wird der vorhandene Wert zurückgegeben und nicht überschrieben
>>> dict1 {1: 'a', 2: 'b', 3: 'c', 4: 'e'} >>> dict1.setdefault(5,'f') 'f' >>> dict1.setdefault(5,'g') 'f' >>> dict1 {1: 'a', 2: 'b', 3: 'c', 4: 'e', 5: 'f'}
4. Wörterbuch löschen
1) pop(key) Löschen Sie ein Element des angegebenen Schlüssels und geben Sie einen Löschvorgang erfolgreich zurück. Wenn der Wert des Elements nicht vorhanden ist, wird eine Ausnahme ausgelöst. Daher müssen Sie bei Verwendung dieser Methode beurteilen, ob der Schlüssel vorhanden ist existiert, oder fangen Sie die Ausnahme
>>> def pop_key(d,key): try: d.pop(key) print "sucess" except: print "key is not in dict" >>> dict1 {1: 'a', 2: 'b'} >>> pop_key(dict1,3) key is not in dict
oder
>>> def sub_dict2(d,key): if d.has_key(key): d.pop(key) print "sucess" else:print "key is not in dict" >>> pop_key(dict1,3) key is not in dict
2) popitem() ähnelt pop(), außer dass es ein (Schlüssel-, Wert-)Tupel löscht
Mit der oben genannten Methode können Sie einige erweiterte Verwendungszwecke verwenden
A. Wir erstellen ein Wörterbuch über 2 Listen Die Liste enthält alle Schlüssel und die zweite Liste enthält alle Werte
>>> list1=[1,2,3] >>> list2=['a','b','c'] >>> dict1=dict(zip(list1,list2)) >>> dict1 {1: 'a', 2: 'b', 3: 'c'}B. Wörterbücher eines Wörterbuchs
>>> dict1 {1: 'a', 2: 'b', 3: 'c'} >>> dict1=dict([(1,'a'),(2,'b'),(3,'c')]) >>> dict1 {1: 'a', 2: 'b', 3: 'c'} >>> subkeys=[1,3] >>> def sub_dict(d,subkeys): return dict([(k,d.get(k)) for k in subkeys if k in d]) >>> print sub_dict(dict1,subkeys) {1: 'a', 3: 'c'}
>>> def invert_dict(d): return dict([(k,v) for v,k in d.iteritems()]) >>> print invert_dict(dict1) {'a': 1, 'c': 3, 'b': 2} >>>5. Andere grundlegende Methoden
1) has_key(key) Bestimmen Sie, ob sich der Schlüssel im Wörterbuch befindet 2) copy() gibt eine Kopie des Wörterbuchs zurück (die Kopie ist eine flache Kopie)
Wenn Sie eine tiefe Kopie erstellen möchten, müssen Sie copy.deepcopy(a) verwenden>>> d2={1:[1],2:[2],3:[3]} >>> d3=d2.copy() >>> d3[1].append(4) >>> d2[1] [1, 4]3) clear() zum Löschen des Diktats
>>> d2={1:[1],2:[2],3:[3]} >>> import copy >>> d3=copy.deepcopy(d2) >>> d3[1].append(4) >>> print d2[1] , d3[1] [1] [1, 4]
4) update(d) use a Das Wörterbuch wird mit einem anderen Wörterbuch aktualisiert, was der Zusammenführung zweier Wörterbücher ähnelt
>>> dict1={1: 'a', 2: 'b', 3: 'c'} >>> dict2={1:'x',4:'y'} >>> dict1.update(dict2) >>> dict1 {1: 'x', 2: 'b', 3: 'c', 4: 'y'} >>>2. Durchlaufen
Es gibt viele Möglichkeiten, ein Wörterbuch zu durchqueren
1. Verwenden Sie dict direkt
>>> d {'a': 'aa', 'c': 'cc', 'b': 'bb'} >>> for i in d: print i,d[i] a aa c cc b bb2. Verwenden Sie items()
>>> for i,v in d.items(): print i,v a aa c cc b bbNatürlich geht das auch
>>> for (i,v) in d.items(): print i,v a aa c cc b bb3. iteritems() (Ich denke, es ist eine bessere Methode)
>>> for k,v in d.iteritems(): print k,v a aa c cc b bb
3. Einige fortgeschrittene Verwendungsmöglichkeiten
1 Werte
Im Allgemeinen werden Wörterbücher eins zu eins zugeordnet. Wenn wir jedoch eine Eins-zu-viele-Zuordnung benötigen, z. B. bei einem Buch, müssen wir die Anzahl der Seiten zählen, auf denen sich einige befinden Wörter erscheinen. Dann können Sie list als Wert von dict verwenden. Dies kann durch die Verwendung der setdefault()-Methode
erreicht werden
当然,如果写成一个函数话,就可以更方便的使用,
我们也可以利用set来代替list
>>> def addFunc(d,word,pag): d.setdefault(word,set()).add(pag) >>> d={'hello':set([1,4,9]),"good":set([1,3,6])} >>> addFunc(d,'hello',8) >>> d {'good': set([1, 3, 6]), 'hello': set([8, 1, 4, 9])} >>> addFunc(d,'bad',8) >>> d {'bad': set([8]), 'good': set([1, 3, 6]), 'hello': set([8, 1, 4, 9])}
2、利用字典完成简单工厂模式
字典的value不单单只是一些常见的字符串,数值,还可以是类和方法,比如我们就可以这样来实现简单工厂模式
>>> class cat(object): def __init__(self): print 'cat init' >>> class dog(object): def __init__(self): print 'dag init' >>> d={'cat':cat,'dog':dog} >>> def factoryFunc(d,name): if name in d: return d[name]() else: raise Exception("error") >>> cat=factoryFunc(d,'cat') cat init
另外一个例子,利用变量来控制执行的函数
>>> def deal_cat(): print 'cat run!!' >>> def deal_dog(): print 'dag run!!' >>> d={'cat':deal_cat ,'dog':deal_dog } >>> animal='cat' >>> d[animal]() cat run!!
更多Python的dict字典结构操作方法相关文章请关注PHP中文网!