您的位置:

Python中setdefault函数实现字典键值对初始化

字典是Python内置的一种数据结构,它以键-值对的形式存储数据,每个键对应一个值,所以我们也把字典称作关联数组或者映射。

在Python中,我们可以通过setdefault函数实现字典键值对的初始化。在这篇文章中,我们将从以下几个方面来讲解它的使用。

一、setdefault函数概述

setdefault函数的作用是在字典中找到指定键并返回对应值,如果找不到则将该键插入字典中,并将对应值初始化为指定值。

setdefault函数的语法如下所示:

dict.setdefault(key, default=None)

其中,key是要查找的键;default是要添加的键值对中,键对应的值,如果没有指定就为None。

二、使用setdefault函数初始化字典键值对

假设我们现在想要统计一段文本中每个单词出现的次数,我们可以首先将文本分割成单词的列表,然后遍历列表,统计每个单词的出现次数:

text = "I am a Python engineer. I love Python programming."
word_list = text.split()

word_count = {}
for word in word_list:
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1

print(word_count)

输出结果为:

{'I': 1, 'am': 1, 'a': 1, 'Python': 2, 'engineer.': 1, 'love': 1, 'programming.': 1}

可以发现,我们可以通过遍历单词列表,使用if语句判断该单词是否已经在字典中出现过,如果出现过,就将该单词对应的值加1,否则新建一个键值对,将该单词的值初始化为1。

使用setdefault函数的写法如下:

text = "I am a Python engineer. I love Python programming."
word_list = text.split()

word_count = {}
for word in word_list:
    word_count.setdefault(word, 0)
    word_count[word] += 1
    
print(word_count)

输出结果为:

{'I': 1, 'am': 1, 'a': 1, 'Python': 2, 'engineer.': 1, 'love': 1, 'programming.': 1}

可以看到,使用setdefault函数实现了相同的功能,而且代码更加简洁。

三、使用setdefault函数避免频繁访问字典

在一些特定的场景中,使用setdefault函数可以避免频繁读写字典。例如,我们想要统计一段文本中每个单词的出现位置,可以使用如下代码:

text = "I am a Python engineer. I love Python programming."
word_list = text.split()

word_positions = {}
for i, word in enumerate(word_list):
    if word not in word_positions:
        word_positions[word] = []
    word_positions[word].append(i)
    
print(word_positions)

输出结果为:

{'I': [0], 'am': [1], 'a': [2], 'Python': [3, 5], 'engineer.': [4], 'love': [6], 'programming.': [7]}

可以看到,我们首先判断该单词是否在字典中出现过,如果没有,就新建一个键值对,将值初始化为一个空列表,然后将该单词出现的位置添加到列表中。

使用setdefault函数的写法如下:

text = "I am a Python engineer. I love Python programming."
word_list = text.split()

word_positions = {}
for i, word in enumerate(word_list):
    word_positions.setdefault(word, [])
    word_positions[word].append(i)
    
print(word_positions)

输出结果为:

{'I': [0], 'am': [1], 'a': [2], 'Python': [3, 5], 'engineer.': [4], 'love': [6], 'programming.': [7]}

可以发现,使用setdefault函数的代码更加简洁,而且在字典的键已经存在的情况下,避免了一次的访问和判断操作。

四、结语

在Python中,setdefault函数可以方便地实现字典键值对的初始化,避免了我们在使用字典时需要频繁使用if语句进行判断。同时在一些特定的场景中,使用setdefault函数可以避免频繁读写字典,提高了代码的效率。