2014-11-27 2 views
0

태그가있는 텍스트가 있고 토큰 및 텍스트의 태그 사전을 만들고 싶습니다. 나는이토큰, 텍스트 태그에 대한 사전 작성

text = "he/s is/v a/p good/j man/n" 

dic = {} 
for w in text.split(): 
    ti = w.split('/') 
    tok =ti[0] 
    tag =ti[1] 
    dic[tok] = tag 
    print dic 

노력이

{'he': 's'} 
{'is': 'v', 'he': 's'} 
{'a': 'p', 'is': 'v', 'he': 's'} 
{'a': 'p', 'is': 'v', 'good': 'j', 'he': 's'} 
{'a': 'p', 'is': 'v', 'good': 'j', 'man': 'n', 'he': 's'} 

가 어떻게 당신이 지능형리스트와 함께 모든 작업을 수행 할 수 있습니다 루프 때문에 내부 사용자의 print의 그건 중복

답변

0

.

for w in text.split(): 
    ti = w.split('/') 
    tok =ti[0] 
    tag =ti[1] 
    dic[tok] = tag 
print dic 

출력 될 것입니다 : 하듯이되지 내부 루프 외부 인쇄 문을 배치

>>> text = "he/s is/v a/p good/j man/n" 
>>> dict([i.split('/') for i in text.split()]) 
{'a': 'p', 'is': 'v', 'good': 'j', 'man': 'n', 'he': 's'} 
+0

이유입니다 :

{'a': 'p', 'is': 'v', 'good': 'j', 'man': 'n', 'he': 's'} 

는이 같은 쉬운 방법이 사전을 만들 수 있습니다 그것은 텍스트의 순서에 있지 않습니까? –

+0

파이썬 사전은 정렬되지 않은 데이터 구조이기 때문입니다. 임의의 값은 해당 키로 직접 액세스 할 수 있으므로 사전에는 사전 순서가 필요하지 않습니다. –

0

을 방지하기 위해 할 수있는 출력을합니다. 먼저 /에 의해 다음 공간 (s.split())하여 문자열을 분할 : 당신은 어떤 중복 생성되지 않습니다

>>> {i:j for i,j in [i.split('/') for i in s.split()]} 
{'a': 'p', 'is': 'v', 'good': 'j', 'man': 'n', 'he': 's'}