2012-07-23 2 views
0

로드 블록을 만났을 때 Godel, Escher, Bach의 MIU 공식 시스템을 코드화하려고 시도했습니다. 나는 컴퓨터 과학과 파이썬에 대해 처음으로 익숙하다. 따라서 기초적인 질문을한다.파이썬에서 인덱스를 통해 검색

derivations = [[0,'MI'],[1,'MII','MIU'],[2,'MIUIU','MIIU','MIII']] 

나는 유도 각 서브 인덱스의 시작 부분에 트리 깊이 번호가 서브 인덱스의 인덱스를 창조하고 싶었다. 루프를 통해 다음 문자열을 실행하려면 정수로 해당 하위 인덱스를 분리하는 가장 좋은 방법은 무엇입니까? 사전에

감사

+2

나는 당신의 질문을 이해하지 않습니다. 주어진 입력에 대해 예상되는 출력은 얼마입니까? – inspectorG4dget

+1

안녕하세요 @ user1544819, 스택 오버플로 질문은 질문에 입력에서 출력에 이르기까지 필요한 모든 정보가 포함되어있을 때 가장 효과적입니다. GEB를 읽은 지 오래되었으므로 나 자신과 다른 사람들을 위해 게시물에서 파생 규칙을 추가하여 사람들이 직접 파생어를 테스트 할 수 있도록해야합니다. – Marius

+0

나는 완전히 이해한다, 나는 또한 나를 위해 모든 것을 해결하는 일부로부터 자신을 보호하고있다. 나는 특별히 색인 문제를 다루기를 원했지만, 끝나면 여기에 게시 할 것입니다. 내가하는 방식보다 더 효율적으로 만들 수있는 좋은 방법이있을 것이라고 확신합니다. – underarock

답변

0

특정 하위 색인을 검색하는 경우, 당신은 그것을 할 수 있습니다

>>> sub_indexes = [index for index where index[0] == 1] 
>>> sub_indexes 
[[1,'MII','MIU']] 

이 결과 그 1 공지 사항의 깊이가있는 모든 하위 인덱스를 반환합니다 할 수 있습니다 단지 공정 문자열로,이 후

>>> sub_index = sub_indexes[0] 
>>> sub_index 
[1, 'MII', 'MIU']] 

을 : 그래서 인덱스를 얻을, 당신이해야 할, 검색 조건에 일치하는 모든 인덱스의 목록이 될 것입니다 :

여기서, generate_more_strings(my_string)은 주어진 문자열의 변형을 생성합니다.

depthDict = {x[0]:x[1:] for x in derivations} 

키로 첫 번째 요소와 dict을 당신에게 목록의 목록을 가지고 구성됩니다 : 당신이 뭔가를 원하는 것처럼

+0

조언과 기술에 감사드립니다! – underarock

1

그것은 나에게 소리. 당신이 그렇게 같은 트리 깊이 번호하여 문자열 목록에 액세스 할 수있는이 방법 :

print depthDict [1] # prints ['MII', 'MIU'] 

또는

for myString in depthDict[3]: 
    print myString # prints MII and MIU 
+0

이것은 많은 의미가 있습니다. 나는 사전을 건너 뛰었고 가장 유용한 옵션으로 이것을 보았을 때 재충전이 필요했습니다. 고맙습니다! – underarock

+0

그래도 문제가 해결되면 알려주세요. – Aesthete

관련 문제