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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/22511.html

(0)
上一篇 2024-01-17
下一篇 2024-01-17

相关推荐

  • 使用while(1)的Python无限循环

    使用while(1)的Python无限循环在Python中,while循环语句可以在满足一定条件的情况下一直执行某个代码块。如果没有指定循环条件,循环就会无限执行下去,此时便可以使用while(1)无限循环。

    2024-08-22
    32
  • Mysql-索引_MySQL索引原理

    Mysql-索引_MySQL索引原理先创建表 1.普通索引 是最基本的索引,它没有任何的限制。有以下几种创建方式 (1)直接创建索引: 实例: indexName为索引名,mytable表名,username和city为列名,10为前缀

    2023-02-08
    145
  • Python List索引操作

    Python List索引操作List是Python中最常用的数据类型之一,与字符串、元组、字典等数据类型并列,其特点是可以储存各种类型数据并且是可变的。在Python中,List中的元素可以使用索引(即下标)进行访问,下标从0开始。以下是一些基本的使用方法:

    2024-02-25
    124
  • Mysql基础01-语法

    Mysql基础01-语法数据库 数据的存储:将数据放到表中,表再放到库中。 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。 表由列组成,我们也称为字段。每个字段描述了它所含有的数据的意义表由列组

    2022-12-26
    147
  • navicat导入oracle数据_cmd导入dmp文件命令

    navicat导入oracle数据_cmd导入dmp文件命令1. 2,点击其他–新建目录–输入目录路径….dmp的目录 3,新建一个表空间, 其他–表空间–新建表空间 点击保存 4…点击数据泵,,数据泵导入 5…点击生成sql,运行, (运

    2023-02-27
    151
  • DataHub——实时数据治理平台

    DataHub——实时数据治理平台DataHub 首先,阿里云也有一款名为DataHub的产品,是一个流式处理平台,本文所述DataHub与其无关。 数据治理是大佬们最近谈的一个火热的话题。不管国家层面,还是企业层面现在对这个问题是越

    2023-02-25
    145
  • Oracle备份、还原数据库

    Oracle备份、还原数据库备份数据库 创建备份目录(用sys账号),若已创建备份目录,此步可忽略 create directory db_bak as 'D: ECIMS_DB' –查看创建的目录 sele

    2022-12-16
    140
  • MySQL第四天「建议收藏」

    MySQL第四天「建议收藏」2022-09-06 1、为某个字段设置别名(as关键字) 以“students”为例: students表的字段有:id,name,age,gender,is_del select name as

    2023-06-04
    139

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注