2016-09-23 1 views
-1

dict_keys() 내의 목록을 정수로 변환하여 다른 시스템으로 보내기위한 트리거로 사용할 수있는 방법을 찾으려고합니다. 내 코드 (아래)는 10 개 카테고리에 속하는 100 개 단어 (새 행에 단어가있는 txt 파일) 목록을 가져옵니다 (예 : 처음 10 개 단어는 카테고리 1에 속하며 2 번째 10 개 단어는 카테고리 2 등에 속합니다.).어떻게 dict_keys 목록을 정수로 변환 할 수 있습니까?

코드 :

나는 지점 전에 첫 번째 숫자를 좋아하는 것 (이 6.7 예를 들면 인 경우 :

dict_keys([0.0, 1.1, 2.0, 3.0, 4.9, 5.0, 0.5, 1.9, 8.0, 9.0, 1.3, 2.7, 3.9, 9.2, 9.4, 7.2, 4.2, 8.6, 5.1, 5.4, 3.3, 1.0, 6.6, 7.4, 7.7, 8.4, 5.8, 9.8, 0.7, 8.8, 2.1, 7.0, 6.4, 4.3, 0.1, 2.5, 3.8, 1.2, 6.9, 7.1, 5.6, 0.4, 5.3, 2.9, 7.3, 3.5, 9.5, 8.2, 2.8, 3.1, 0.9, 2.3, 8.1, 4.0, 6.3, 6.7, 4.5, 0.2, 1.7, 2.2, 8.9, 1.4, 7.6, 9.1, 7.8, 5.5, 4.8, 0.6, 3.2, 2.4, 6.5, 9.9, 9.6, 1.5, 6.0, 3.7, 4.7, 3.4, 5.9, 4.1, 1.6, 6.8, 9.3, 3.6, 8.5, 8.7, 0.3, 0.8, 7.5, 5.2, 2.6, 4.6, 5.7, 7.9, 6.1, 1.8, 8.3, 6.2, 9.7, 4.4]) 

내가 무엇이 필요

from numpy.random import choice 
from collections import defaultdict 

number_of_elements = 10 

Words = open('file_location').read().split() 

categories = defaultdict(list) 
for i in range(len(words)): 
    categories[i/number_of_elements].append(words[i]) 

category_labels = categories.keys() 

category_labels 

출력 , 그냥 정수로 6 싶습니다).

도움이나 조언을 미리 보내 주셔서 감사합니다.

답변

4

목록 이해력을 사용하여 키를 정수로 변환하면됩니다. 사전이 직접 충분 이상 반복 여기 .keys()를 호출 할 필요가 없다는 것을 유의하십시오

[int(k) for k in categories] 
당신은 정수 범주로보다는 부동 소수점 값으로 직접 값을 버킷 할 수 있습니다

:

categories = defaultdict(list) 
for i, word in enumerate(words): 
    categories[int(i/number_of_elements)].append(word) 

enumerate()을 사용하여 range()을 사용하고 words으로 다시 색인을 생성하는 대신 색인과 단어를 짝 지어서 사용했습니다.

+0

키가 복제되면 '0.5 == 0'과'0.0 == 0' 데이터가 손실됩니다! 질문은 나쁜 아이디어와 대답을 얻었습니다. – dsgdfg

+0

@dsgdfg : OP *가 정수 값으로 버킷을 만들 수있는 이유가 무엇입니까? 그러나 코드에서 데이터가 손실되는 위치는 어디입니까? –

+0

그래, '사실'이지만 색인을 잃어 버렸어. 이후에 값을 사용/비교하는 방법? – dsgdfg