您的位置:首页 > 编程语言 > Python开发

python模块学习(collections模块)

2017-11-16 13:00 471 查看

学习版本3.5.2

1.namedtuple,是tuple的子类,字面意思可命名的元组,就是用来创建一个给各个元素都加上了key的tuple。
#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

import collections

if __name__ == "__main__":

a = (1,2,3)
newtuple = collections.namedtuple('newtuple',['a','b','c'])
b = newtuple(1,2,3)

print("a:",a)
print("a[0]:",a[0])
print("="*20)
print("b:",b)
print("b[0]:",b[0])
print("b.a:",b.a)


运行结果
a: (1, 2, 3)
a[0]: 1
====================
b: newtuple(a=1, b=2, c=3)
b[0]: 1
b.a: 1


2.deque,是双端队列,类似list,但是它能在两端都快速的进行append和pop操作。
#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

import collections

if __name__ == "__main__":
que = collections.deque([1,2,3]) #用list初始化que

que.append(2)#在右侧插入2
que.appendleft(3)#在左侧插入3
print(que.count(2))#返回等于2的元素的数量
que.extend(['a','b'])#把list里的元素一个一个插入到右侧
que.extendleft(['c','d'])#把list里的元素一个一个插入到左侧
print(que.index(2))#返回等于2的第一个位置
que.insert(5,'g')#在5位置插入'g'
que.pop()#删除右侧的第一个元素
que.popleft()#删除左侧的第一个元素
que.remove(2)#删除第一个等于2的元素
que.reverse()#把que左右顺序颠倒
que.rotate(3)#把que右侧的3个元素放到左侧
que.clear()#清空que


3.ChainMap,map链,将dict放到一起来方便查询
#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

import collections

if __name__ == "__main__":
dict1 = {'a':1,'b':2}
dict2 = {'c':3,'d':4}

#用dict1和dict2初始化chainmap
chainmap = collections.ChainMap(dict1, dict2)
print(chainmap)
#获得key为a的value
print(chainmap.get('a'))

#获得一个新的chainmap并在左侧加上{'e',5}
chainmap = chainmap.new_child({'e':5})
print(chainmap)
#chainmao.parents相当于去掉左侧的dict剩下的部分
#删除最左侧dict中key为a的元素
chainmap.parents.pop('a')
print(chainmap)
#删除最左侧dict中的第一个元素
chainmap.parents.parents.popitem()
print(chainmap)


运行结果

ChainMap({'b': 2, 'a': 1}, {'c': 3, 'd': 4})
1
ChainMap({'e': 5}, {'b': 2, 'a': 1}, {'c': 3, 'd': 4})
ChainMap({'e': 5}, {'b': 2}, {'c': 3, 'd': 4})
ChainMap({'
b4aa
e': 5}, {'b': 2}, {'d': 4})


4.Counter,继承了dict类,统计传入的序列中每一个元素出现的次数。

#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

import collections

if __name__ == "__main__":
#用字符串初始化一个counter
counter = collections.Counter("aababcabcd")
print(counter)
#most_common(n)列出counter中最常见的几个元素,参数为None时候列出所有元素
print(counter.most_common(2))
#update(...)添加元素
counter.update('e')
print(counter)
counter.update('a')
print(counter)
#subtract(...)减少元素
counter.subtract('e')
print(counter)
counter.subtract('e')
print(counter)
#counter支持+(加号)、-(减号)、&、|、+=、-=、&=、|=、+(正号)、-(负号)
#+(正号)将counter中的次数为0和负的去掉了
#-(负号)将counter中次数为0和正的去掉然后把负的全部变为正的
print(-counter)
print(+counter)


运行结果

Counter({'a': 4, 'b': 3, 'c': 2, 'd': 1})
[('a', 4), ('b', 3)]
Counter({'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 1})
Counter({'a': 5, 'b': 3, 'c': 2, 'd': 1, 'e': 1})
Counter({'a': 5, 'b': 3, 'c': 2, 'd': 1, 'e': 0})
Counter({'a': 5, 'b': 3, 'c': 2, 'd': 1, 'e': -1})
Counter({'e': 1})
Counter({'a': 5, 'b': 3, 'c': 2, 'd': 1})


5.OrderedDict,有序字典是dict的子类,对字典的元素进行了排序的字典
#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

import collections

if __name__ == "__main__":
odict = collections.OrderedDict()
odict['a'] = 1
odict['b'] = 2
odict['c'] = 3
print(odict)
#items()返回键值对组成的列表
print(odict.items())
#keys()返回key组成的列表
print(odict.keys())
#values()返回value组成的列表
print(odict.values())
#move_to_end(key)把对应的key-value移到字典最后
odict.move_to_end('b')
print(odict)
#pop(key)获取对应的value并把该键值对从字典删除
print('b',odict.pop('b'))
print(odict)
#popitem()返回并删除最右边的元素
print(odict.popitem())
print(odict)
#setdefault(key)返回对应key的value,如果key不存在则创建
print('d',odict.setdefault('d'))
print(odict)


运行结果

OrderedDict([('a', 1), ('b', 2), ('c', 3)])
odict_items([('a', 1), ('b', 2), ('c', 3)])
odict_keys(['a', 'b', 'c'])
odict_values([1, 2, 3])
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
b 2
OrderedDict([('a', 1), ('c', 3)])
('c', 3)
OrderedDict([('a', 1)])
d None
OrderedDict([('a', 1), ('d', None)])


6.defaultdict,默认字典,将字典的value设置成默认值

#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

import collections

if __name__ == "__main__":
#用list初始化defaultdict
ddict = collections.defaultdict(list)
ddict['a'].append(1)
ddict['a'].append(2)
ddict['b'].append(3)
print(ddict)
#用dict初始化defaultdict
ddict = collections.defaultdict(dict)
ddict['a'].update({'a1':1})
ddict['a'].update({'b1':2})
ddict['b'].update({'c1':3})
print(ddict)
#用collections.Counter初始化defaultdict
ddict = collections.defaultdict(collections.Counter)
ddict['a'].update('abc')
ddict['a'].update('abcde')
ddict['b'].update('abcd')
print(ddict)
#用lambda表达式初始化defaultdict
ddict = collections.defaultdict(lambda: 1)
ddict['a'] += 1
ddict['b'] += 2
print(ddict)


运行结果

defaultdict(<class 'list'>, {'a': [1, 2], 'b': [3]})
defaultdict(<class 'dict'>, {'a': {'b1': 2, 'a1': 1}, 'b': {'c1': 3}})
defaultdict(<class 'collections.Counter'>, {'a': Counter({'c': 2, 'a': 2, 'b': 2, 'd': 1, 'e': 1}), 'b': Counter({'d': 1, 'c': 1, 'a': 1, 'b': 1})})
defaultdict(<function <lambda> at 0x101a608c8>, {'a': 2, 'b': 3})


7.UserDict,UserList,UserString

这三个东西就是在对象的data变量里面拷贝了一份初始化的变量。。

这三的作用是让用户自己添加操作来对特定的数据进行管理
#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

import collections

if __name__ == "__main__":
d = {'a':1,'b':2}
myd = collections.UserDict(d)
d.update({'c':3})
print(d)
print(myd.data)

l = [1,2]
myl = collections.UserList(l)
l.append(3)
print(l)
print(myl.data)

s = 'abc'
mys = collections.UserString(s)
s = s + 'de'
print(s)
print(mys.data)


运行结果
{'c': 3, 'a': 1, 'b': 2}
{'a': 1, 'b': 2}
[1, 2, 3]
[1, 2]
abcde
abc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python