2017-11-28 1 views
0

이 목표는 각각에 정수 값이 할당 된 잠재적 단어 사전을 제공하며 코드는 색인과 값을 추가 한 다음 임의의 숫자를 생성하는 별도의 목록을 작성합니다. 그런 다음 난수에서 목록으로 이동하여 그보다 더 큰 첫 번째 값을 선택합니다. 그런 다음 누적 값이 해당하는 단어를 반환합니다.Python 통계적으로 목록을 사용하여 사전에서 단어를 선택하십시오.

i = 0 
cumulative = [] 
for self.nGramCounts in candidates: 
    cumulative.append(candidates[i] + i) 
    i += 1 
x = random.randrange(0, 10) 
print x #show x value 
for cumulative in cumulative[x:]: 
    if cumulative[x] in cumulative: 
     print candidates[x] 
    else: 
     x = x + 1 

여기 입력 사전의 예 :

{'the': 2, 'quick': 1, 'brown': 1} 
+1

예상되는 출력은 무엇입니까? – depperm

+0

누적 개수 (index + value)가 –

+0

에 해당하는 키는'self.nGramCounts in candidates :'에 약간 혼란 스럽습니다. 왜'candidate.'에있는 아이템을'self.nGramCounts' 인스턴스 속성에 (반복해서) 할당하고 있습니다. 그런 다음 루프 스위트에서 사용하지 않습니까? 이 코드를 실행하면 어떻게됩니까? – wwii

답변

0

이것이 해결책 그러나하여 사전 순서를 유지하기 위해, 항목 하나씩 부가되어야한다. 이러한 순서대로 항목은 OrderedDict 개체에 저장됩니다.

from collections import OrderedDict 
import random 

ordered_dict = OrderedDict() 
ordered_dict['the'] = 2 
ordered_dict['quick'] = 1 
ordered_dict['brown'] = 1 

generated_index = random.randrange(0, 3) 
new_index = ordered_dict.values()[generated_index] + generated_index 

resulting_string = ordered_dict.keys()[new_index] 
print resulting_string 

새 색인이 범위를 벗어날 가능성이 있습니다. 그러한 상황을 어떻게 처리 할 지 생각해보십시오.

+0

정말 고마워! –

관련 문제