counterカウンタcollectionモジュール
import collections
c1 = collections.Counter("aaaabbbbcccjjj")
print(type(c1))
print(c1,'
')
"""
Counter({'a': 4, 'b': 4, 'c': 3, 'j': 3})
"""
#
c1.update("xxwc")
print(c1,'
')
#Counter({'a': 4, 'b': 4, 'c': 4, 'j': 3, 'x': 2, 'w': 1})
c1.subtract("a")
print(c1,'
')
#Counter({'b': 4, 'c': 4, 'a': 3, 'j': 3, 'x': 2, 'w': 1})
# 3 。
ret = c1.most_common(3)
print(ret)
print(type(ret),'
')
#[('b', 4), ('c', 4), ('a', 3)]
#
# c1
for item in c1.elements():
print(item)
print('
')
for k,v in c1.items():
print(k,v)
print(type(k),type(v))
print('
')
"""
a 3
b 4
c 4
"""
for k in c1.keys():
print(k)
"""
a
b
c
j
x
w
"""
ちくじじしょ
d1 = collections.OrderedDict()
d1['k3'] = 'v3'
d1['k1'] = 'v1'
d1['k2'] = 'v2'
print(d1)
OrderedDict([('k3', 'v3'), ('k1', 'v1'), ('k2', 'v2')])
デフォルト辞書
デフォルトの辞書を作成するときに値のタイプを指定する必要があります.
d2 = collections.defaultdict(list)
d2['k1'].append('v1')
print(d2)
defaultdict(, {'k1': ['v1']})
名前付き元祖
# mytupleclass
mytupleclass = collections.namedtuple('mytupleclass',['x','y','z'])
# ,
obj = mytupleclass(1,2,3)
print(obj.x) #1
print(obj.y) #2
print(obj.z) #3
双方向キュー
双方向キューの両方にアクセス可能
In [89]: d = collections.deque()
In [90]: type(d)
Out[90]: collections.deque
In [91]: d.append(1) #append
In [92]: d.append(2)
In [93]: d.appendleft(3)
In [94]: d
Out[94]: deque([3, 1, 2])
In [96]: d.extend([5,8]) #
In [97]: d
Out[97]: deque([3, 1, 2, 5, 8])
In [98]: d.pop() #
Out[98]: 8
In [99]: d
Out[99]: deque([3, 1, 2, 5])
In [100]: d.remove(1) #
In [101]: d
Out[101]: deque([3, 2, 5])
In [102]: d.rotate(1) #
In [103]: d
Out[103]: deque([5, 3, 2])
In [104]: d.rotate(2)
In [105]: d
Out[105]: deque([3, 2, 5])
たんほうこうキュー
queueモジュールの中にあります.一方的なキューは比較的多く使用されます.
一方通行の列は入りながら、同じ側に出るしかありません
In [106]: import Queue
In [107]: dd = Queue.Queue()
In [108]: type(dd)
Out[108]: instance
In [110]: dd.put(1)
In [111]: dd.put(3)
In [112]: dd
Out[112]:
In [115]: dd.qsize()
Out[115]: 2