Python中的defaultdict和set用法详解

Python中的defaultdict和set用法详解Defaultdict是使用字典时的一种常见补充,它继承了dict的所有方法,同时可以提供一个默认值,当字典中没有某个键的时候可以自动根据默认值创建一个新值。

一、什么是defaultdict

Defaultdict是使用字典时的一种常见补充,它继承了dict的所有方法,同时可以提供一个默认值,当字典中没有某个键的时候可以自动根据默认值创建一个新值。

使用defaultdict

使用defaultdict需要两个步骤,首先需要导入collections模块,然后定义默认值。下面是一个例子:

from collections import defaultdict

#定义初始默认值为int类型0
d = defaultdict(int)
print(d['one']) #0

#定义初始默认值为list类型[]
d = defaultdict(list)
print(d['one']) #[]

#定义初始默认值为lambda表达式
d = defaultdict(lambda : 'None')
print(d['one'])  #'None'

defaultdict的应用场景

Defaultdict可以简化一些逻辑复杂的代码,尤其是在处理字典的时候。例如,如果要通过统计一个字符串中每个字符的出现次数,那么使用Defaultdict可以轻松实现:

s = 'hello world'
d = defaultdict(int)
for c in s:
    d[c] += 1
print(d)
#输出结果为:
#defaultdict(, {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

二、什么是set

Set是Python提供的用于存储不重复元素的数据结构,它的内部实现是一个哈希表,因此访问元素的时间复杂度为O(1),在需要快速判断某个元素是否出现在一个集合中时,set非常实用。

使用set

使用set只需要定义一个set对象,通过add()方法可以向set中添加元素。例如:

s = set()
s.add(1)
s.add(2)
s.add(3)
print(s)  #{1, 2, 3}

set的应用场景

Set可以应用于很多场合,例如快速去重、判断一个元素是否出现在一个序列中、实现关系测试等等。例如下面的代码可以快速将一个列表去重:

lst = [1, 2, 3, 1, 2, 3, 4, 5]
s = set(lst)
lst = list(s)
print(lst) #[1, 2, 3, 4, 5]

三、defaultdict和set的结合使用

在某些情况下,我们需要维护一些元素的聚类情况,例如将相同字母构成的单词视为一个组,那么可以使用defaultdict来维护一个字母到组号的映射,使用set来维护每个组中包含的单词。

from collections import defaultdict

words = ['dog', 'god', 'cat', 'act', 'tac']
d = defaultdict(set)

for word in words:
    key = tuple(sorted(word))
    d[key].add(word)

for key in d:
    print(list(d[key]))
#输出结果为:
#['dog', 'god']
#['cat', 'act', 'tac']

结语

本文主要介绍了Python中defaultdict和set的使用方法,希望读者们能够在实际编程中更好地应用这两个数据结构,提高代码的效率和可读性。

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

(0)
上一篇 2024-04-07
下一篇 2024-04-07

相关推荐

  • 李卓豪:网易数帆数据中台逻辑数据湖的实践

    李卓豪:网易数帆数据中台逻辑数据湖的实践导读: 本文将介绍过去15年中,网易大数据团队在应对不断涌现的新需求、新痛点的过程中,逐渐形成的一套逻辑数据湖落地方法。内容分为五部分: 关于网易数帆 为什么做逻辑数据湖 怎么做逻辑数据湖 未来规划

    2023-05-19
    148
  • 让用户输入的神奇函数

    让用户输入的神奇函数input()是Python中用于获取用户输入的函数,它会阻塞程序的执行,直到用户输入完毕并回车后才会继续执行程序。最基本的使用方法就是直接调用这个函数,然后等待用户输入:

    2024-02-28
    99
  • 安装mysql 实操截图「终于解决」

    安装mysql 实操截图「终于解决」前言: CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用MariaDB代替了,MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发…

    2023-02-01
    151
  • Python os.environ模块:环境变量的管理

    Python os.environ模块:环境变量的管理os.environ模块是Python提供的用于对系统环境变量进行管理的工具,简单而言,它是一个存储环境变量的字典。环境变量是指在操作系统中定义的以键值对的形式存在的一系列变量,这些变量用于存储系统相关的信息,例如当前用户的登录名、操作系统的安装目录、Python安装路径等。在本文中,我们将详细介绍os.environ模块的用法,并演示如何使用os.environ来设置、获取和删除环境变量。

    2023-12-16
    123
  • 打造交互式GUI:Python Tkinter实战教程

    打造交互式GUI:Python Tkinter实战教程Graphical User Interface(GUI),即图形用户界面,是指使用图形方式显示在计算机屏幕上的视觉元素和控件,用户可以通过它们与程序进行交互。 在本教程中,我们将使用Python Tkinter库来创建GUI。

    2024-03-12
    74
  • 开源直播课丨大数据集成框架ChunJun类加载器隔离方案探索及实践

    开源直播课丨大数据集成框架ChunJun类加载器隔离方案探索及实践本期我们带大家回顾一下无倦同学的直播分享《ChunJun类加载器隔离》,ChunJun类加载器隔离的方案是我们近期探索的一个新方案,这个方案目前还不是非常成熟,希望能借由此次分享与大家一起探讨下这方案

    2023-06-09
    124
  • Python字典解析工具

    Python字典解析工具Python字典解析是将一个可迭代对象转换为字典的一种简化方式,它能够让开发者更加高效地创建和修改字典。

    2024-01-14
    112
  • 04.Mapreduce实例——单表join[通俗易懂]

    04.Mapreduce实例——单表join[通俗易懂]04.Mapreduce实例——单表join 实验原理 以本实验的buyer1(buyer_id,friends_id)表为例来阐述单表连接的实验原理。单表连接,连接的是左表的buyer_id列和右表

    2023-04-28
    161

发表回复

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