Heim  >  Artikel  >  Backend-Entwicklung  >  Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

Go语言进阶学习
Go语言进阶学习nach vorne
2023-07-25 16:52:301299Durchsuche

1. dict

Python verfügt über eine integrierte Wörterbuchunterstützung: dict, dessen vollständiger Name Wörterbuch ist, wird in anderen Sprachen auch als Schlüsselwert (Key-Value) bezeichnet und verfügt über eine extrem schnelle Suchgeschwindigkeit .

Beispiel: Angenommen, Sie möchten die entsprechenden Noten anhand der Namen der Klassenkameraden finden. Wenn Sie zur Implementierung eine Liste verwenden, benötigen Sie zwei Listen:

names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]

Definieren Sie einen Namen Noten, Sie müssen zuerst Namen in Namen eingeben. Suchen Sie die entsprechende Position und rufen Sie dann die entsprechenden Ergebnisse aus den Bewertungen ab. Je länger die Liste, desto länger dauert es.

Bei Implementierung mit dict ist nur eine Vergleichstabelle „Name“-„Score“ erforderlich, und die Ergebnisse können direkt anhand des Namens durchsucht werden, die Suchgeschwindigkeit wird sich nicht verlangsamen runter.

Beispiel:

d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
print(d['Michael'])

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

1. Warum ist die Diktatsuche so schnell?

diktieren besteht darin, die dem Wort entsprechende Seitenzahl in der Indextabelle des Wörterbuchs (z. B. der Wurzeltabelle) nachzuschlagen und dann direkt auf der Seite nachzuschlagen, um das Wort zu finden. Unabhängig davon, nach welchem ​​Wort Sie suchen, ist die Suchgeschwindigkeit sehr hoch und wird auch mit zunehmender Größe des Wörterbuchs nicht langsamer.

Die Methode zum Einfügen von Daten in dict kann zusätzlich zur Angabe während der Initialisierung auch per Schlüssel eingegeben werden:

d['Adam'] = 67
print(d['Adam'])

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

d['Jack'] = 90
d['Jack'] = 88
print(d['Jack']) #多次对一个key放入value,后面的值会把前面的值冲掉:显示后面修改的值

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

如果key不存在,dict就会报错:

print( d['Thomas'])

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

2. 避免key不存在的错误,有两种办法。

2.1. 是通过in判断key是否存在

print('Thomas' in d)

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

2.2.  是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value

d.get('Thomas')
print(d.get('Thomas', -1))

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

注:

返回None的时候Python的交互式命令行不显示结果。

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

d.pop('Bob')
print(d)

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

3. 和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而增加;

  2. 需要占用大量的内存,内存浪费多。而list相反:

  3. 查找和插入的时间随着元素的增加而增加;

  4. 占用空间小,浪费内存很少。所以,dict是用空间来换取时间的一种方法。

二、set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

要创建一个set,需要提供一个list作为输入集合:

s = set([1, 2, 3])
print(s)

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。。

重复元素在set中自动被过滤:

s = set([1, 1, 2, 2, 3, 3])
print(s)

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

s.add(4)
 s{1, 2, 3, 4}

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

通过remove(key)方法可以删除元素:

s.remove(2)
print(s)

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
print(s1 & s2)


print(s1 | s2)

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

set和dict的区别

仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。


三、再议不可变对象

str是不变对象,而list是可变对象。对于可变对象,比如list,对list进行操作,list内部的内容是会变化的。

例:

a = ['c', 'b', 'a']
a.sort() # a['a', 'b', 'c']
print(a)

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

而对于不可变对象,比如str,对str进行操作呢:

a = 'abc'
b = a.replace('a', 'A')
print(b)
print(a)

Bestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung

注:

对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。


四、总结

本文基于Python基础,介绍了如何去使用dict和set, 使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。

Das obige ist der detaillierte Inhalt vonBestandsaufnahme der häufigsten Verwendungen von dict und set in der Python-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:Go语言进阶学习. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen