集合妙用的收集

1)字典: 有序性

collections模块:

1.OrderedDict: 有序字典

2.defaultdict: 带有默认值的字典

OrderedDict:

使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。

如果要保持Key的顺序,可以用OrderedDict

>>> from collections import OrderedDict
>>> d = dict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)])
>>> d # dict的Key是无序的
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2}
>>> od = OrderedDict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)])
>>> od # OrderedDict的Key是有序的
OrderedDict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)])

注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:

>>> od = OrderedDict()
>>> od[‘z‘] = 1
>>> od[‘y‘] = 2
>>> od[‘x‘] = 3
>>> od.keys() # 按照插入的Key的顺序返回
[‘z‘, ‘y‘, ‘x‘]

2.defaultdict: 带有默认值的字典

有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

from collections import defaultdict

values = [11, 22, 33,44,55,66,77,88,99,90]

my_dict = defaultdict(list)

for value in  values:
    if value>66:
        my_dict[‘k1‘].append(value)
    else:
        my_dict[‘k2‘].append(value)

另外他可以直接引用,不需要重新定义key

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: ‘N/A‘)
>>> dd[‘key1‘] = ‘abc‘
>>> dd[‘key1‘] # key1存在
‘abc‘
>>> dd[‘key2‘] # key2不存在,返回默认值
‘N/A‘

3)collections模块:Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。

c = Counter(‘abcdeabcdabcaba‘)
print c
输出:Counter({‘a‘: 5, ‘b‘: 4, ‘c‘: 3, ‘d‘: 2, ‘e‘: 1})

它算出所有的值,最后都会变成字典。
时间: 2024-10-18 18:17:30

集合妙用的收集的相关文章

第五周——集合、ArrayList、TreeSet

1 一.    回忆数组 1.1数组 存储同一数据类型的集合容器. 1.2数组的特点 1.只能存储同一种数据类型的数据. 2.一旦初始化,长度固定. 3.数组中的元素与元素之间的内存地址是连续的. 1.3注意事项 Object类型的数组可以存储任意类型的数据. 二.为什么要学习集合 2.1需求 收集我们班同学的兴趣爱好. 数组存储兴趣爱好: String[]  arr = new String[]; 难处在于,无法初始化数组的长度,因为每个人的兴趣爱好都不一样,有的人有很多的兴趣爱好,有的人的兴

1JAVA集合

1.   Collection Collection接口是List.Set和Queue接口的父接口,该接口定义的方法即存在于Set集合也存在于List集合和Queue集合: 1.1Set接口 HashSet: HashSet是基于HashMap实现的, /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * default initial capacity (16) and loa

数据挖掘与数据仓库之间的区别

数据挖掘技术是经由自动或半自动的方法探勘及分析大量的资料,以创建有效的模型及规则,而企业通过数据挖掘可以更加了解他们的客户,进而改进他们的行销.业务及客服的运作. 数据挖掘是数据仓库的一种重要运用.基本上,它是用来将你的资料中隐藏的资讯挖掘出来,所以 Data Mining 其实是所谓的 Knowledge Discovery 的一部份,Data Mining 使用了许多统计分析与 Modeling 的方法,到资料中寻找有用的特征(Patterns)以及关连性(Relationships). K

基于大数据技术的手机用户画像与征信研究

内容提要:手机用户画像是电信运营商实现“数据驱动业务与运营”的重要举措.首先,介绍了手机用户画像过程中对个人隐私保护的方法,然后分析手机用户画像的数据来源与大数据实现技术,最后,通过数据样本实例分析手机用户画像在个人征信中的应用. 引言 随着计算机网络技术的不断发展,“数据即资源”的大数据时代已经来临.用户画像是电信运营商为了避免管道化风险,实现“数据驱动业务与运营”的重要举措.用户画像与应用大数据技术对客户分类密切相关,是单个客户的众多属性标签的累积:另一方面,在运营商涉足的消费金融领域,对手

深入理解JVM之四:详解垃圾收集器

前言 前面已经对垃圾收集算法有了较为详细的介绍,这里我们将对JVM中具体的垃圾回收器进行介绍,在虚拟机规范中并没有对垃圾回收器如何实现具体介绍,因此每个厂商的垃圾回收器可能会完全不同,但是我们介绍的是基于JDK1.7之后的Hotspot虚拟机(包括前面对Java虚拟机的介绍也是基于jdk1.7版本的).在Hotspot中,虚拟机的收集器主要有下: 可以看到垃圾收集器是按对象的分代来划分的,可以用线条连接的垃圾回收器表示两者可以配合使用.可以看到新生代垃圾收集器有Serial.ParNew.Par

转 G1垃圾收集器入门

转自:http://blog.csdn.net/zhanggang807/article/details/45956325 最近在复习Java GC,因为G1比较新,JDK1.7才正式引入,比较艰难的找到一篇写的很棒的文章,粘过来mark下.总结这篇文章和其他的资料,G1可以基本稳定在0.5s到1s左右的延迟,但是并不能保证更低的比如毫秒级(金融场景,所以说涉及到钱的,对技术要求真高),号称zing可以(但是一般做到低延时,在其他方面肯定有所损耗,比如吞吐),但是没有实际去研究过这种.另外,G1

数据挖掘和数据仓库之间的区别

数据挖掘技术是经由自动或半自动的方法探勘及分析大量的资料,以创建有效的模型及规则,而企业通过数据挖掘可以更加了解他们的客户,进而改进他们的行销.业务及客服的运作. 数据挖掘是数据仓库的一种重要运用.基本上,它是用来将你的资料中隐藏的资讯挖掘出来,所以 Data Mining 其实是所谓的 Knowledge Discovery 的一部份,Data Mining 使用了许多统计分析与 Modeling 的方法,到资料中寻找有用的特征(Patterns)以及关连性(Relationships). K

说说Thread.Sleep(0)的那些奇怪的事

写在前面 最近在弄一个传输组件,用到很多多线程的知识,其中有个问题,困扰我很久,不知道是什么原因,脑子一热,在传输过程中,添加了一句代码Thread.Sleep(0).那个问题竟然解决了,耗费我一上午的时间,一点一点的排查是不是代码逻辑有问题.到最后一句话解决了,兴奋归兴奋,但是为什么这句话就能解决我的问题呢?而且还是睡个0,是不是你也遇到过这种情况?不妨一起讨论下这句神奇的代码! Thread.Sleep(0)妙解 这里收集了网上的一篇文章,解释的非常有趣,转载在博客中,也推荐给大家一起看看.

MongoDB——GridFS

GridFS是一个规范的存储和检索文件超过16 mb的bson文档大小限制. 而不是将文件存储在一个文档中,GridFS文件分为部分,或块,每个块作为一个单独的文档.使用FridFS与使用分片无 关.在默认情况下网格文件系统块大小限制为255 k.GridFS文件系统使用两个集合存储文件.一个收集存储文件块, 其他商店文件元数据. 当你查询GridFS文件系统存储文件时,驱动或客户端将重新组装块.你可以通过GridFS文件系统上执行范围查询 文件存储.你也可以从任意部分的文件访问信息,你可以"跳