値を持つ defaultdict があるとします。
x = defaultdict(int)
x[a,1] = 1
x[a,2] = 2
x[a,3] = 3
x[b,1] = 4
x[b,2] = 5
x[b,3] = 6
x[c,1] = 7
x[c,2] = 8
x[c,3] = 9
最初のインデックスが c の要素のみにアクセスするにはどうすればよいですか
というか、次のようなものをどのように実装しますか。
for key2 in x[,c]:
print key2
値を持つ defaultdict があるとします。
x = defaultdict(int)
x[a,1] = 1
x[a,2] = 2
x[a,3] = 3
x[b,1] = 4
x[b,2] = 5
x[b,3] = 6
x[c,1] = 7
x[c,2] = 8
x[c,3] = 9
最初のインデックスが c の要素のみにアクセスするにはどうすればよいですか
というか、次のようなものをどのように実装しますか。
for key2 in x[,c]:
print key2
以下を使用することもできます。これは、私のコンピューターでは少し高速です。
for i,e in x:
if i=='c':
print (i,e),x[(i,e)]
テスト:
def func1():
for key in x.keys():
if key[0] =='c':
return key, x[key]
def func2():
for i,e in x:
if i=='c':
return (i,e),x[(i,e)]
timeit func1()
100000 loops, best of 3: 1.9 us per loop
timeit func2()
1000000 loops, best of 3: 1.56 us per loop
Defaultdict は、通常の dict と同様に、キーに対して特別なスライス動作を行いません。キーは単なるオブジェクトであり、あなたの場合は単なるタプルです。dict は、キーの内部構造について何も知らないか、強制しません。(たとえば、異なる長さの異なるキーを持つことが可能です。) 必要なものを取得する最も簡単な方法は次のとおりです。
for key in x.keys():
if key[0] == 'c':
print key, x[key]
別の可能性は、代わりに defaultdicts の defaultdict を使用し、 のような要素にアクセスすることですx['c'][1]。