2012-10-23 5 views
0

나는 x 사전의 모든 출현을 계산하지만 결과가없는 가장 간단한 방법을 사용하려고합니다. 모든 라이브러리를 가져올 수 없으며 다음과 같은 다른 구문을 사용할 수 없습니다. for var in, 해당하는 경우 x (있는 경우) 스크립트의사전이 여러 번 발견 되었습니까?

결과는 다음과 같아야합니다 예 :

list = [1,2,1,'a',4,2,3,3,5,'a',2] 

code 

print occurrences(list) 

result 

1 = [0, 2] 
2 = [1, 5, 10] 
a = [3, 9] 
and so on 

이 @edited 어떤 라이브러리 또는 기능을 사용하지 않고, 텍스트

+3

[당신이 시도 무엇?] (http://whathaveyourtried.com) 또한, 귀하의 질문에 명확히하십시오 - cicles은 무엇입니까? – thegrinner

+0

나는 "statment"와 "for statment"를 의미한다. – user1768615

답변

0

OK 수정 :

lis = [1,2,1,'a',4,2,3,3,5,'a',2] 
dic={} 
index=0 
for item in lis: 
    if item in dic: 
     dic[item]+=[index] 
     index+=1 
    else: 
     dic[item]=[index] 
     index+=1 
print dic 

출력 :

{'a': [3, 9], 1: [0, 2], 2: [1, 5, 10], 3: [6, 7], 4: [4], 5: [8]} 
+0

두 경우 모두 2x 인덱스 + = 1을 사용하는 이유는 무엇입니까? @edit "if"를 추가하고 "else"를 삭제하십시오. – user1768615

+0

'enumerate'는'index'를 수동으로 계산할 때보다 편리합니다. –

+0

str.index()를 사용하려고했지만 첫 번째 인덱스 만 반환하고 나머지는 무시했습니다 ... 열거 형 예제를 보여 주면 친절 할 수 있습니까? – user1768615

4
>>> l = [1,2,1,'a',4,2,3,3,5,'a',2] 
>>> pos = {} 
>>> for i, n in enumerate(l): 
...  pos.setdefault(n, []).append(i) 
... 
>>> pos 
{'a': [3, 9], 1: [0, 2], 2: [1, 5, 10], 3: [6, 7], 4: [4], 5: [8]} 
>>> for k, v in pos.items(): 
...  print "%s = %s" % (k, v) 
... 
a = [3, 9] 
1 = [0, 2] 
2 = [1, 5, 10] 
3 = [6, 7] 
4 = [4] 
5 = [8] 
+0

문제의 좋은 해결책. 2x 변수를 사용하여 설명해 줄 수 있습니까? "i, n", 제발? – user1768615

+0

@ user1768615'enumerate'는 튜플'(position, element)'('[(0,1), (1,2), (2,1), ...]')을 가진 iterator를 반환합니다. 'i, n' 문법은 단지 다중 할당 일 뿐이다. 위치는'i', 요소는'n'이다. –

+0

더 단순한 range()를 열거 대신 사용 하시겠습니까? – user1768615

관련 문제