这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_factory的类实例,而且具有默认值。

使用list作第一个参数,可以很容易将键-值对序列转换为列表字典。

  1 import collections
2 s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
3
4 d = collections.defaultdict(list)
5 for k, v in s:
6 d[k].append(v)#这里的结构是k:[] 所以这里可以append
7
8
9 print(d.items())
10
11 print(d["aaa"]) #获取不存在的key并不会报错

输出:

dict_items([('yellow', [1, 3]), ('blue', [2, 4]), ('red', [1])])
[]

dict_items 统计”yellow” 的所有v的值, d[“aaa”] 没有此key返回空列表

字典也有类似功能:

  1 s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
2 d={}
3 for k, v in s:
4 d.setdefault(k,[]).append(v)
5
6 print(d.items())

这个方法便捷性差一些 dict.setdefault()

defaultdict计数,将default_factory设为int即可

  1 from collections import defaultdict
2 s = 'mississippiasdjklajskdlzxzxcmasdasdzxc'
3 d = defaultdict(int)
4
5 for k in s:
6 d[k] += 1
7
8 print(d.items())

结果:

dict_items([('m', 2), ('i', 4), ('s', 8), ('p', 2), ('a', 4), ('d', 4), ('j', 2), ('k', 2), ('l', 2), ('z', 3), ('x', 3), ('c', 2)])

字符串中的字母第一次出现时,字典中没有该字母,default_factory函数调用int()为其提供一个默认值0,加法操作将计算出每个字母出现的次数。

使用函数返回

此函数不能带参数

  1 from collections import defaultdict
2 def constant_factory(value):
3 return lambda: 0
4 d = defaultdict(constant_factory(s))
5
6 print(d["aaa"])

结果

0

使用lambda来完成统计

  1 from collections import defaultdict
2 s = 'mississippiasdjklajskdlzxzxcmasdasdzxc'
4 counter = defaultdict(lambda: 0)
5 for kw in s:
6 counter[kw] += 1

collections.defaultdict()的使用的更多相关文章

  1. python collections defaultdict

    class_counts  = defaultdict(int) 一.关于defaultdict 在Python里面有一个模块collections,解释是数据类型容器模块.这里面有一个collect ...

  2. Python collections.defaultdict 笔记

    其实defaultdict 就是一个字典,只不过python自动的为它的键赋了一个初始值.这也就是说,你不显示的为字典的键赋初值python不会报错,看下实际例子. 比如你想计算频率 frequenc ...

  3. Python collections.defaultdict() 与 dict的使用和区别

    看样子这个文档是难以看懂了.直接看示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import collections s = [('yellow', ...

  4. Python: dict setdault函数与collections.defaultdict()的区别

    setdault用法 >>>dd={'hy':1,'hx':2} >>>cc=dd.setdefault('hz',1) >>>cc      返 ...

  5. (转)Python 3 collections.defaultdict() 与 dict的使用和区别

    原文:https://www.cnblogs.com/herbert/archive/2013/01/09/2852843.html 在Python里面有一个模块collections,解释是数据类型 ...

  6. Python 3 collections.defaultdict() 与 dict的使用和区别

    综述: 这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_fact ...

  7. collections.defaultdict()

    https://www.cnblogs.com/herbert/archive/2013/01/09/2852843.html >>> import collections > ...

  8. Python中collections.defaultdict()使用

    一个小示例 from collections import defaultdict import json def tree(): return defaultdict(tree) users = t ...

  9. Python之collections.defaultdict

    转自:http://www.jb51.net/article/88147.htm

随机推荐

  1. flutter Switch组件 On/off 用于切换一个单一状态

    import 'package:flutter/material.dart'; class SwitchDemo extends StatefulWidget { @override _SwitchD ...

  2. Dart函数方法

    /* 内置方法/函数: print(); 自定义方法: 自定义方法的基本格式: 返回类型 方法名称(参数1,参数2,...){ 方法体 return 返回值; } */ void printInfo( ...

  3. python链接mysql pymysql

    python链接mysql import pymysql conn = pymysql.connect(user=', database='gbt2019', charset='utf8') curs ...

  4. dtypes.py", line 499 _np_qint8 = np.dtype([("qint8", np.int8, (1,)])

    Traceback (most recent call last): File "<stdin>", line 1, in <module> File &q ...

  5. xshell连接中标麒麟

    中标麒麟: 1.首先肯定需要给虚拟机配置静态ip,让虚拟机作为独立的ip存在 https://www.cnblogs.com/judes/p/11776872.html 2.输入rpm -qa | g ...

  6. Docker容器(三)——容器端口映射

    (1).容器端口映射 容器的端口映射用到了-p选项,-p [物理机端口]:[容器实例端口] 让centos:httpd运行在后台 [root@youxi1 ~]# docker run -d -p 8 ...

  7. iOS 给view,button,text filed,label等添加边框和颜色

    self.tfaaa.layer.borderWidth = 2; self.tfaaa.layer.borderColor = [UIColor blueColor].CGColor;

  8. Spring Boot与ActiveMQ的集成

    Spring Boot对JMS(Java Message Service,Java消息服务)也提供了自动配置的支持,其主要支持的JMS实现有ActiveMQ.Artemis等.本节中,将以Active ...

  9. 【Leetcode_easy】849. Maximize Distance to Closest Person

    problem 849. Maximize Distance to Closest Person solution1: class Solution { public: int maxDistToCl ...

  10. 【Leetcode_easy】836. Rectangle Overlap

    problem 836. Rectangle Overlap solution: class Solution { public: bool isRectangleOverlap(vector< ...