c = Counter('abcdeabcdabcaba')
import collections
c = collections.Counter('abcdeabcdabcaba')
print (c)
结果:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
结论:统计字符串出现的次数
import collections
c = collections.Counter('abcdeabcdabcaba')
print (c)
ret = c.most_common(2)
print (ret)
结果:[('a', 5), ('b', 4)]
结论:统计出现次数最多的两个字符串
import collections
c = collections.Counter('abcdeabcdabcaba')
print (c)
print (sorted(c))
结果:['a', 'b', 'c', 'd', 'e']
结论:列出所有唯一的元素
import collections
c = collections.Counter('abcdeabcdabcaba')
print (c)
for k,v in c.items():
print (k,v)
结果:
Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
a 5
c 3
e 1
d 2
b 4
结论:统计各个字符串出现的次数
OrderedDict
import collections
dic = collections.OrderedDict()
dic['k3'] = 'v3'
dic['k1'] = 'v1'
dic['k2'] = 'v2'
print (dic)
结果:OrderedDict([('k3', 'v3'), ('k1', 'v1'), ('k2', 'v2')])
结论:用列表来维系有序字典
defaultdict
import collections
values = [11,22,33,44,55,66,77,88,99]
dic = collections.defaultdict(list) #设置缺省为list类型
for value in values:
if value <66:
dic['k1'].append(value)
else:
dic['k2'].append(value)
print (dic['k1'])
print (dic['k2'])
不使用缺省字典
values = [11,22,33,44,55,66,77,88,99]
dic1 = {'k1':[]}
dic2 = {'k2':[]}
for value in values:
if value < 66:
dic1['k1'].append(value)
else:
dic2['k2'].append(value)
print (dic1)
print (dic2)
结果:
{'k1': [11, 22, 33, 44, 55]}
{'k2': [66, 77, 88, 99]}
结论:必须制定dic1,dic2的值为list空表
namedtuple(可命名的元祖)
import collections
Test = collections.namedtuple('Test',('x','y','z'))
obj = Test(11,22,33)
print (obj.x)
结果:11
结论:针对元祖,要访问数据只能通过下标来访问,但是对于可命名的元祖,可以通过构建新的一个类(譬如Test),然后调用方法来实现
双向队列
import collections
dq = collections.deque()
单向队列
import queue
q = queue.Queue()
q.put("123")
r = q.get()
print (r)