python字典的setdefault的巧妙用法

  • Post category:Python

当使用python字典时,你可能会遇到这样的场景:如果要向一个已有的字典中添加值,你需要先判断这个键是否存在,如果存在就直接修改值,否则就添加这个键值对。这种判断和添加的过程比较麻烦,可以使用字典的setdefault()方法来简化操作。在本文中,我将为你详细介绍python字典的setdefault()方法,并展示其巧妙用法。

什么是python字典的setdefault()?

setdefault()是python字典中的一个方法,用于向字典中添加键值对。如果当前的字典中没有该键,则会自动添加这个键值对,并返回值;如果已经有了该键,则会返回该键对应的值。方法的语法如下:

dict.setdefault(key, default=None)

其中,key为要查找的键;default为要添加的键的默认值,如果键不存在时会使用这个默认值。当不写default且字典中没有对应的键时,默认值为None

要点:

  1. key参数和default参数都是必须的.
  2. 如果key在字典中不存在,则将key添加到字典中并将default作为key所对应的值,然后返回default.
  3. 如果key在字典中存在,返回key对应的值.
  4. 代码中可以省略default

下面让我们看几个具体的用例来学习这个方法更好地使用。

示例1:使用setdefault()在字典中添加值

看下面一段代码:

d = {'a':1, 'b':2}
if 'c' in d:
    d['c'] += 1 
else:
    d['c'] = 1

如果字典中不存在键'c',那么代码就会向字典中添加一个键为'c'值为1的键值对。如果'c'已经存在,那么代码就会将'c'对应的值加一。这种方法看起来很笨,因为重复的代码会变得很多,在大量添加键值对时就显得很浪费时间了。使用setdefault()方法可以帮助我们简化这一过程,如下所示:

d = {'a':1, 'b':2}
d.setdefault('c', 0)
d['c']+=1

这里的第二行代码会检查键'c'是否已经在字典中存在。如果不存在,就会向字典中添加一个键为'c',值为0的键值对。如果存在,就会跳过这一步。第三行代码直接将'c'对应的值加一。这个示例代码是一个比较简单的例子,但是在大量添加键值对时,使用setdefault()将会是个更加简单的做法。

示例2:用setdefault()向列表中添加值

在python中,我们可以使用字典来处理文本中的单词计数问题。例如,如果有一段文本,需要计算其中单词出现的次数。那么我们可以使用字典来保存每个单词出现的次数,如下所示:

text = "hello world hello"
word_count = {}
for word in text.split():
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1
print(word_count)

在这个例子中,我们创建了一个word_count字典,将文本中的每个单词进行分割、遍历,如果字典中已经存在该单词,就将该单词对应的值加一,否则就将该单词加入字典并令值为1。使用setdefault()也可以很简单地解决这个问题,如下所示:

text = "hello world hello"
word_count = {}
for word in text.split():
    word_count.setdefault(word, 0)
    word_count[word] += 1
print(word_count)

在第三行代码中,我们使用setdefault()方法将单词加入字典,并将默认值设为0。这种方式的思路其实和之前的例子很相似,但是这里显然更为简洁。

结论

在这篇文章中,我们学习了python字典的setdefault()方法,它可以很方便地向字典中添加键值对,并且可以简化添加重复键值对的繁琐代码。此外,我们还考虑了几个使用这个方法的实例,来更好地理解它是如何使用的。