2012-10-27 2 views
0

내가 값으로 defaultdict이 말 defaultdict : 나는액세스 특정 파이썬

또는 오히려 C로 최초의 인덱스 만 그 요소에 액세스 할 방법

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 

을, 나는 이런 식으로 뭔가를 구현하는 방법은 다음과 같습니다

for key2 in x[,c]: 
    print key2 

답변

0

Defaultdict는 일반적인 dicts와 마찬가지로 키에 특수 슬라이스 동작을하지 않습니다. 키는 단지 객체이며, 귀하의 경우에는 단지 튜플입니다. DICK는 키의 내부 구조에 대해 알지도 모릅니다. (예를 들어, 서로 다른 길이와 다른 키를 가질 수 있습니다.) 가장 간단한 방법은 당신이 원하는 것은 이것이다 얻을 :

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

또 다른 가능성은 대신 defaultdicts의 defaultdict를 사용하고 x['c'][1] 같은 요소에 액세스하는 것입니다 .

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