python学習ノート:collectionsモジュール
3816 ワード
1.collectionsモジュールの紹介
collectionsモジュールは、元のpythonデータ型に基づいて新しいデータ型を提供します. namedtuple:名前を使用して要素コンテンツにアクセスできるtupleサブクラス を生成する deque:両端キューで、オブジェクト を他の側から迅速に追加および押し出すことができる. Counter:カウンタ、主に をカウントするために使用される OrderedDict:秩序辞書 defaultdict:デフォルト値の辞書 2.使用説明
2.1 namedtuple
namedtupleは主に、名前を使用して要素にアクセスできるデータ・オブジェクトを生成するために使用され、通常、コードの可読性を向上させるために使用されます.たとえば、次のようにします.
2.2 deque
dequeは両端キューで、キューのヘッダからオブジェクトを増やしたり取り出したりすることができ、listに比べてデータ量が大きい場合に実行速度を向上させることができます.
2.3 defaultdict
defaultdictは、辞書内に存在しないkeyを要求すると、工場関数メソッドを呼び出し、結果をkeyのデフォルト値として標準辞書タイプのKeyErrorエラーを回避する工場関数を入力します.
2.4 OrderedDict
OrderedDictはDictとは異なり、秩序ある辞書オブジェクトです.
2.5 Counter
Counterは、文字の出現回数を統計するカウンタです
collectionsモジュールは、元のpythonデータ型に基づいて新しいデータ型を提供します.
2.1 namedtuple
namedtupleは主に、名前を使用して要素にアクセスできるデータ・オブジェクトを生成するために使用され、通常、コードの可読性を向上させるために使用されます.たとえば、次のようにします.
In [1]: from collections import namedtuple
In [2]: websites = [
...: ('google', 'http://www.google.com/', 'search engine'),
...: ('Sina', 'http://www.sina.com.cn/', 'blog'),
...: ('taobao', 'http://www.taobao.com/', 'shopping store')
...: ]
In [3]: Website = namedtuple('Website', ['name', 'url', 'remark'])
In [4]: for website in websites:
...: website = Website._make(website)
...: print website
...:
Website(name='google', url='http://www.google.com/', remark='search engine')
Website(name='Sina', url='http://www.sina.com.cn/', remark='blog')
Website(name='taobao', url='http://www.taobao.com/', remark='shopping store')
In [5]: p = Website('w3', 'www.w3school.com.cn', 'study')
In [6]: p
Out[6]: Website(name='w3', url='www.w3school.com.cn', remark='study')
In [7]: d = p._asdict()
In [8]: d['name']
Out[8]: 'w3'
In [9]: d['url']
Out[9]: 'www.w3school.com.cn'
2.2 deque
dequeは両端キューで、キューのヘッダからオブジェクトを増やしたり取り出したりすることができ、listに比べてデータ量が大きい場合に実行速度を向上させることができます.
In [1]: from collections import deque
In [2]: p = deque([1, 2, 3, 4])
In [3]: p.append(5)
In [4]: p.appendleft(0)
In [5]: p
Out[5]: deque([0, 1, 2, 3, 4, 5])
2.3 defaultdict
defaultdictは、辞書内に存在しないkeyを要求すると、工場関数メソッドを呼び出し、結果をkeyのデフォルト値として標準辞書タイプのKeyErrorエラーを回避する工場関数を入力します.
In [1]: from collections import
In [2]: d = defaultdict(lambda: 'None')
In [3]: d[1]
Out[4]: 'None'
In [5]: members = [
...: ['male', 'John'],
...: ['male', 'Jack'],
...: ['female', 'Lily'],
...: ['male', 'Pony'],
...: ['female', 'Lucy'],
...: ]
In [6]: result = defaultdict(list)
In [7]: for sex, name in members:
...: result[sex].append(name)
...:
In [8]: print result
defaultdict(, {'male': ['John', 'Jack', 'Pony'], 'female': ['Lily', 'Lucy']})
2.4 OrderedDict
OrderedDictはDictとは異なり、秩序ある辞書オブジェクトです.
In [1]: from collections import OrderedDict
In [2]: items = (
...: ('A', 1),
...: ('B', 2),
...: ('C', 3),
...: ('D', 4)
...: )
In [3]: regular_dict = dict(items)
In [4]: ordered_dict = OrderedDict(items)
In [5]: for k, v in regular_dict.iteritems():
...: print "regular dict %s = %s" % (k, v)
...:
regular dict A = 1
regular dict C = 3
regular dict B = 2
regular dict D = 4
In [6]: for k, v in ordered_dict.iteritems():
...: print "ordered dict %s = %s" % (k, v)
...:
ordered dict A = 1
ordered dict B = 2
ordered dict C = 3
ordered dict D = 4
2.5 Counter
Counterは、文字の出現回数を統計するカウンタです
In [1]: from collections import Counter
In [2]: c = Counter()
In [3]: for s in '111345eeabab':
...: c[s] = c[s] + 1
...:
In [4]: c
Out[4]: Counter({'1': 3, '3': 1, '4': 1, '5': 1, 'a': 2, 'b': 2, 'e': 2})