字典是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函数可以避免频繁读写字典,提高了代码的效率。