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 ({}, {})
>>> dict1={1:'a',2:'b',3:'c'} >>> dict1 {1: 'a', 2: 'b', 3: 'c'}
>>> 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'
wird zurückgegeben
>>> type(dict1.get(4)) <type 'NoneType'>
>>> dict1.get(4,'not found') 'not found'
>>> dict1.keys() [1, 2, 3]
>>> dict1.values() ['a', 'b', 'c']
>>> dict1.items() [(1, 'a'), (2, 'b'), (3, 'c')]
>>> for key in dict1.iterkeys(): print key 1 2 3
1), die direkte Methode ist
>>> dict1[4]='d' >>> dict1 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
>>> dict1[4]='e' >>> dict1 {1: 'a', 2: 'b', 3: 'c', 4: 'e'}
>>> 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'}
>>> 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} >>>
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]
>>> 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'} >>>
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 bb
>>> for i,v in d.items(): print i,v a aa c cc b bb
>>> for (i,v) in d.items(): print i,v a aa c cc b bb
>>> 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中文网!