Heim  >  Artikel  >  Backend-Entwicklung  >  Pythons Operationsmethode für die Struktur des Diktatwörterbuchs

Pythons Operationsmethode für die Struktur des Diktatwörterbuchs

高洛峰
高洛峰Original
2017-03-02 17:15:121548Durchsuche

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 &#39;NoneType&#39;>
Wenn der erforderliche Schlüsselwert nicht vorhanden ist, geben Sie einen anderen zurückzugebenden Wert an

>>> dict1.get(4,&#39;not found&#39;) 
&#39;not found&#39;

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() 
[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
4), items() gibt ein (Schlüssel, Wert) entsprechendes Tupel zurück

>>> dict1.items() 
[(1, &#39;a&#39;), (2, &#39;b&#39;), (3, &#39;c&#39;)]
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 
3

3. Wörterbuchwert festlegen Die Methode


1), die direkte Methode ist


>>> dict1[4]=&#39;d&#39; 
>>> dict1 
{1: &#39;a&#39;, 2: &#39;b&#39;, 3: &#39;c&#39;, 4: &#39;d&#39;}
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]=&#39;e&#39; 
>>> dict1 
{1: &#39;a&#39;, 2: &#39;b&#39;, 3: &#39;c&#39;, 4: &#39;e&#39;}
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: &#39;a&#39;, 2: &#39;b&#39;, 3: &#39;c&#39;, 4: &#39;e&#39;} 
>>> dict1.setdefault(5,&#39;f&#39;) 
&#39;f&#39; 
>>> dict1.setdefault(5,&#39;g&#39;) 
&#39;f&#39; 
>>> dict1 
{1: &#39;a&#39;, 2: &#39;b&#39;, 3: &#39;c&#39;, 4: &#39;e&#39;, 5: &#39;f&#39;}

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: &#39;a&#39;, 2: &#39;b&#39;} 
>>> pop_key(dict1,3) 
key is not in dict

oder

Der has_key (Schlüssel) dient hier dazu, festzustellen, ob der Schlüssel im Wörterbuch vorhanden ist. Natürlich können Sie stattdessen auch den Schlüssel in d verwenden.
>>> 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=[&#39;a&#39;,&#39;b&#39;,&#39;c&#39;] 
>>> dict1=dict(zip(list1,list2)) 
>>> dict1 
{1: &#39;a&#39;, 2: &#39;b&#39;, 3: &#39;c&#39;}

B. Wörterbücher eines Wörterbuchs


C. Kehren Sie das Wörterbuch um, dh der Schlüssel wird zum Wert des neuen Wörterbuchs und der Wert wird zum Schlüssel des neuen Wörterbuchs (beachten Sie, dass bei doppelten Werten das umgekehrte Wörterbuch nur einen behält
>>> dict1 
{1: 'a', 2: 'b', 3: 'c'} 
>>> dict1=dict([(1,&#39;a&#39;),(2,&#39;b&#39;),(3,&#39;c&#39;)]) 
>>> dict1 
{1: &#39;a&#39;, 2: &#39;b&#39;, 3: &#39;c&#39;} 
>>> 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) 
{&#39;a&#39;: 1, &#39;c&#39;: 3, &#39;b&#39;: 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: &#39;a&#39;, 2: &#39;b&#39;, 3: &#39;c&#39;} 
>>> dict2={1:&#39;x&#39;,4:&#39;y&#39;} 
>>> dict1.update(dict2) 
>>> dict1 
{1: &#39;x&#39;, 2: &#39;b&#39;, 3: &#39;c&#39;, 4: &#39;y&#39;} 
>>>
2. Durchlaufen

Es gibt viele Möglichkeiten, ein Wörterbuch zu durchqueren

1. Verwenden Sie dict direkt

>>> d 
{&#39;a&#39;: &#39;aa&#39;, &#39;c&#39;: &#39;cc&#39;, &#39;b&#39;: &#39;bb&#39;} 
>>> for i in d: 
 print i,d[i] 
 
a aa 
c cc 
b bb
2. Verwenden Sie items()

>>> for i,v in d.items(): 
 print i,v 
 
a aa 
c cc 
b bb

Natürlich geht das auch


I Denken Sie daran, dass es einen Artikel gab, in dem die Effizienz dieser beiden Methoden (mit Klammern und ohne Klammern) verglichen wurde. Darin heißt es, dass die Wörterbuchgröße mit Klammern schneller ist, wenn sie unter 200 liegt, und dass die Geschwindigkeit ohne Klammern über 200 liegt etwas schneller, aber ich habe es nicht speziell getestet.
>>> for (i,v) in d.items(): 
 print i,v 
 
a aa 
c cc 
b bb

3. iteritems()

(Ich denke, es ist eine bessere Methode)


Andere Es gibt auch einige Durchlaufmethoden, aber ich denke, dass diese 3 ausreichen
>>> 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={&#39;hello&#39;:set([1,4,9]),"good":set([1,3,6])} 
>>> addFunc(d,&#39;hello&#39;,8) 
>>> d 
{&#39;good&#39;: set([1, 3, 6]), &#39;hello&#39;: set([8, 1, 4, 9])} 
>>> addFunc(d,&#39;bad&#39;,8) 
>>> d 
{&#39;bad&#39;: set([8]), &#39;good&#39;: set([1, 3, 6]), &#39;hello&#39;: set([8, 1, 4, 9])}

2、利用字典完成简单工厂模式
字典的value不单单只是一些常见的字符串,数值,还可以是类和方法,比如我们就可以这样来实现简单工厂模式

>>> class cat(object): 
 def __init__(self): 
 print &#39;cat init&#39; 
>>> class dog(object): 
 def __init__(self): 
 print &#39;dag init&#39; 
>>> d={&#39;cat&#39;:cat,&#39;dog&#39;:dog} 
>>> def factoryFunc(d,name): 
 if name in d: 
 return d[name]() 
 else: 
 raise Exception("error") 
>>> cat=factoryFunc(d,&#39;cat&#39;) 
cat init

另外一个例子,利用变量来控制执行的函数

>>> def deal_cat(): 
 print &#39;cat run!!&#39; 
 
>>> def deal_dog(): 
 print &#39;dag run!!&#39; 
 
>>> d={&#39;cat&#39;:deal_cat ,&#39;dog&#39;:deal_dog } 
>>> animal=&#39;cat&#39; 
>>> d[animal]() 
cat run!!


更多Python的dict字典结构操作方法相关文章请关注PHP中文网!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn