0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

要素のカウント方法

Posted at

重複を許す整数の配列があるような状況を想定する。ここで、各整数が配列内に何回出現しているかを調べたい。このような問題設定の場合はhashmapを使うことで要素をカウントすることができる。

dictを使用した方法

pythonのオリジナルのclassのdictだけを使用して行う。

一番シンプルな方法

keyが存在しないのに、そのkeyの使用を行おうとした場合エラーを出すのでkeyの存在を確認するという場合分けを行う。

d = {}
for num in nums:
	if num in d:
		d[num] += 1
	else:
		d[num] = 1

getを使った方法

初見ではトリッキーではあるが、このようなコードも見かける。dictのget(key, default=None) はあるkeyに対応するvalueを返す、keyが存在しない場合はdefaultの値を返すという挙動をする。

d[key]による要素の取得では、keyが存在しない場合にエラーが出てしまうがgetはエラーを発生させずに処理を行える。

d = {}
for num in nums:
	d[num] = d.get(num, 0) + 1

defaultdictを使う

pythonのcollectionsに含まれているdefaultdictを使用することでも場合分けを避けることができる。keyを自身で定義していない場合でもエラーが発生せず、デフォルト値が返される。

import collections

d = collections.defaultdict(int)
for num in nums:
	d[num] += 1

Counterを使う

collectionsに含まれるのCounterを使用することも可能。numsのような(イテラブルなど)を渡せば、自動的にこれまでやってきたような処理を行ってくれる。コードを見ればわかるように引数にnumsを指定するだけで、要素をkey、カウント数をvalueとするようなdictが作られる。

文字列やdictを渡すことも可能である。

import collections
d = collections.Counter(nums)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?