【備忘録】collections

python3
あくまで備忘録なんで雑に記録します

Counter(重複リストを辞書化してカウント)

A = [1, 1, 4, 5, 5, 5]
from collections import Counter
C = Counter(A)

#Counter辞書化
print(C)#Counter({5: 3, 1: 2, 4: 1})
#C[キー]で個数を返す
print(C[4])#1
#キーのみリスト・バリューのみリスト
print(C.keys())#dict_keys([1, 4, 5])
print(C.values())#dict_values([2, 1, 3])
print(list(C.keys()))#[1, 4, 5]
# Counter使わずに、辞書つくる
A = [1, 2, 3, 3, 3, 4]
Di = dict()
for i in A:
    if i not in Di:
        Di[i] = 1
    else:
        Di[i] += 1
print(Di)
#ちょっと面倒臭い

defaultdict(空っぽの辞書:要素なしも0で用意されている)

from collections import defaultdict
#初期化された辞書を用意
D = defaultdict(int)#lambda:1 で、初期値1
print(D[0])#0
print(D[1])#0
print(D[2])#0

deque(キュー:FIFO)

from collections import deque
#要素の追加・取り出し(削除)・アクセス(取得)が両端のみに速い
A = [3, 4, 5, 6]
D = deque(A)


#キュー追加(エンキュー右に)
D.append(7)
print(D)#deque([3, 4, 5, 6, 7])
#キュー削除(デキュー左から)
print(D.popleft())#3

deque(スタック:LIFO)

from collections import deque
#要素の追加・取り出し(削除)・アクセス(取得)が両端のみに速い
A = [3, 4, 5, 6]
D = deque(A)


#スタック追加(プッシュ右に)
D.append(7)#deque([3, 4, 5, 6, 7])
print(D)

#スタック削除(ポップ右から)
print(D.pop())#7

参考にしました

Pythonのdequeでキュー、スタック、デック(両端キュー)を扱う | note.nkmk.me
Pythonの標準ライブラリcollectionsモジュールのdeque型を使うと、データをキューやスタック、デック(両端キュー)として効率的に扱うことができる。collections.deque --- コンテナデータ型 — Python 3.11.4 ドキュメント 組み込みのリストlistをキューやスタック、デック...

コメント

"+r+""+h+""+">"}var c,i=n(45),u=n(74),f=n(64),s=n(53),p=n(76),l=n(41),y=(n=n(52),"prototype"),h="script",v=n("IE_PROTO"),g=function(){try{c=new ActiveXObject("htmlfile")}catch(r){}var r;g="undefined"==typeof document||document.domain&&c?function(r){r.write(a("")),r.close();var t=r.parentWindow.Object;return r=null,t}(c):((r=l("iframe")).style.display="none",p.appendChild(r),r.src=String("javascript:"),(r=r.contentWindow.document).open(),r.write(a("document.F=Object")),r.close(),r.F);for(var t=f.length;t--;)delete g[y][f[t]];return g()};s[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(o[y]=i(t),n=new o,o[y]=null,n[v]=t):n=g(),e===r?n:u.f(n,e)}},function(r,t,e){var n=e(5),o=e(44),a=e(43),c=e(45),i=e(11),u=e(75);t.f=n&&!o?Object.defineProperties:function(r,t){c(r);for(var e,n=i(t),o=u(t),f=o.length,s=0;s=t||56320!=(64512&i(r,e))))return!1}return!0}})},function(r,t,e){var n=e(91),o=String;r.exports=function(r){if("Symbol"===n(r))throw new TypeError("Cannot convert a Symbol value to a string");return o(r)}},function(r,t,e){var n=e(2),o=e(7),a=e(13),c=e(15),i=e(102),u=(e=e(6),Array),f=a("".charAt),s=a("".charCodeAt),p=a([].join),l="".toWellFormed,y=l&&e((function(){return"1"!==o(l,1)}));n({target:"String",proto:!0,forced:y},{toWellFormed:function(){var r=i(c(this));if(y)return o(l,r);for(var t=r.length,e=u(t),n=0;n
タイトルとURLをコピーしました