当前位置:主页 > python教程 > Python defaultdict教程

Python defaultdict教程示例详解

发布:2023-03-04 10:00:01 59


我们帮大家精选了相关的编程文章,网友龙德元根据主题投稿了本篇教程内容,涉及到Python、defaultdict教程、Python、defaultdict、Python defaultdict教程相关内容,已被133网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

Python defaultdict教程

1. 概述

在我们使用Python中的dict时,常常需要判断某个关键字是否已经在dict中,如果不存在则初始化,存在则进行另外的操作。例如统计一篇文章中所有单词出现次数的代码,大致写法如下:

words_num = {}
for word in words:
    if word not in words_num.keys():
        words_num[word] = 1
    else:
        words_num[word] += 1

这样写总是需要判断key是否在dict中,不是很优雅。

Python标准库collections中defaultdict类可以很好的解决这个问题。这个类使用与dict几乎一样,除了可以在初始化时设置key的默认类型和数值。类的声明格式为defaultdict(default_factory=None, /[, ...]),default_factory是一个Callable类型的变量。

例如,foo = defaultdict(int)表示foo中的key的默认类型是int,且默认值为int的默认值0,我们可以获取任意的key,不需要手动初始化key:

>>> from collections import defaultdict
>>> foo = defaultdict(int)
>>> foo['a']
0
>>> foo['b']
0
>>> foo['whatever']
0
>>> foo['a'] += 1
>>> foo['a']
1

所以最开始的例子可以简化为如下:

from collections import defaultdict
words_num = defaultdict(int)
for word in words:
    words_num[word] += 1

可以看到使用defaultdict后,代码中只需要关注上层逻辑(统计单词的出现次数),而不需要关注具体的语法的代码实现(dict是否存在某个key,没有的话xxx,有的话xxx),因此世界变得更美好了一些。

除了int外,用list,tuple,dict,set等作为变量也比较常见。除了内置类型外,还可以自定义函数,比如设置key的默认值为'China':

>>> from collections import defaultdict
>>> def set_default_contry():
...     return "China"
...
>>> person_from = defaultdict(set_default_contry)
>>> person_from['张三']
'China'
>>> person_from['李四']
'China'
>>> person_from['Tim'] = 'USA'
>>> person_from
defaultdict(, {'a': 'China', '张三': 'China', '李四': 'China', 'Tim': 'USA'})

defauldict是一个简单但很好用的功能,在日常的使用中还是能减少一些代码复杂度的。希望这篇小文能给让你写代码更容易,更开心。

以上就是Python defaultdict教程示例详解的详细内容,更多关于Python defaultdict教程的资料请关注码农之家其它相关文章!


参考资料

相关文章

  • Python中文编译的环境:编写程序时如何不乱码?

    发布:2021-05-06

    本篇文章介绍了python编程中的基础如何编写中文与不乱码不报错


  • ElasticSearch Python 基本操作

    发布:2020-02-21

    python提供了操作ElasticSearch 接口,因此要用python来操作ElasticSearch,这篇文章主要介绍了Python 操作 ElasticSearch,需要的朋友可以参考下


  • Python中的常见数据集打乱方法

    发布:2023-04-21

    这篇文章主要介绍了Python中的常见数据集打乱方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • python 生成唯一id的四种方式

    发布:2023-03-21

    本文主要介绍了python 生成唯一id的四种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • python全栈的基础知识

    发布:2019-12-16

    即利用python和别的语言从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的所有事情,真正实现全栈开发。


  • python torch的用法

    发布:2020-05-19

    python torch又称PyTorach,它是一个以Python 优先的深度学习框架,不仅能够实现强大的GPU 加速,同时还支持动态神经网络,这是现在很多主流框架比如Tensorflow 等都不支持的。


  • Python3 串口接收与发送16进制数据包的实例

    发布:2022-10-27

    给网友们整理关于Python3的教程,今天小编就为大家分享一篇Python3 串口接收与发送16进制数据包的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • 解决Python报错:ValueError:operands could not be broadcast together with shapes

    发布:2023-04-05

    这篇文章主要给大家介绍了关于解决Python报错:ValueError:operands could not be broadcast together with shapes的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下


网友讨论