Pythons Operationsmethode für die Struktur des Diktatwörterbuchs

高洛峰
Freigeben: 2017-03-02 17:15:12
Original
1554 Leute haben es durchsucht

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 
({}, {})
Nach dem Login kopieren
2), initialisieren Sie einen Wert, wenn Sie einen neuen erstellen

>>> dict1={1:'a',2:'b',3:'c'} 
>>> dict1 
{1: 'a', 2: 'b', 3: 'c'}
Nach dem Login kopieren
3), verwenden Sie Tupel


>>> dict1=dict([(1,'a'),(2,'b'),(3,'c')]) 
>>> dict1 
{1: 'a', 2: 'b', 3: 'c'}
Nach dem Login kopieren

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'
Nach dem Login kopieren
Wenn er nicht im Wörterbuch vorhanden ist, a NoneType

wird zurückgegeben

>>> type(dict1.get(4)) 
<type &#39;NoneType&#39;>
Nach dem Login kopieren
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;
Nach dem Login kopieren

2),keys() Alle Schlüsselwerte im Wörterbuch abrufen und eine Liste zurückgeben

>>> dict1.keys() 
[1, 2, 3]
Nach dem Login kopieren
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;]
Nach dem Login kopieren
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;)]
Nach dem Login kopieren
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
Nach dem Login kopieren

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;}
Nach dem Login kopieren
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;}
Nach dem Login kopieren
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;}
Nach dem Login kopieren

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
Nach dem Login kopieren

oder

< ab 🎜>

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
Nach dem Login kopieren

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;}
Nach dem Login kopieren

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'}
Nach dem Login kopieren

>>> 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} 
>>>
Nach dem Login kopieren
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]
Nach dem Login kopieren

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]
Nach dem Login kopieren

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;} 
>>>
Nach dem Login kopieren
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
Nach dem Login kopieren
2. Verwenden Sie items()

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

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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])}
Nach dem Login kopieren

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
Nach dem Login kopieren

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

>>> 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!!
Nach dem Login kopieren


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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!