0

値を持つ 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
4

2 に答える 2

0

以下を使用することもできます。これは、私のコンピューターでは少し高速です。

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
于 2012-10-27T06:49:37.167 に答える
0

Defaultdict は、通常の dict と同様に、キーに対して特別なスライス動作を行いません。キーは単なるオブジェクトであり、あなたの場合は単なるタプルです。dict は、キーの内部構造について何も知らないか、強制しません。(たとえば、異なる長さの異なるキーを持つことが可能です。) 必要なものを取得する最も簡単な方法は次のとおりです。

for key in x.keys():
   if key[0] == 'c':
       print key, x[key]

別の可能性は、代わりに defaultdicts の defaultdict を使用し、 のような要素にアクセスすることですx['c'][1]

于 2012-10-27T06:27:06.840 に答える