2016-10-31 3 views
1

키 값 쌍 sentence_IDcluster_ID 인 사전이 있습니다. {sentence_ID : cluster_ID}큰 사전을 통해 반복 속도를 높이는 방법

예 :

는 형식 합계

my_id_dict: 
    {0: 71, 
    1: 63, 
    2: 66, 
    3: 92, 
    4: 49, 
    5: 85 
     . 
     .} 

난 sentence_IDs 위에 200,000 및 100 cluster_IDs있다.

my_id_dict을 반복하여 각 클러스터에 문장 번호목록을 생성하려고합니다.

예 출력 내가 원하는 :

논리는 각 클러스터에 대해, 딕셔너리에 걸쳐 모두 20 만에 CLUSTER_ID에 대한 다음 문장 목록을 만들 것입니다 : 이것은 내가 사용하는 코드는

Cluster 0 
[63, 71, 116, 168, 187, 231, 242, 290, 330, 343] 

Cluster 1 
[53, 107, 281, 292, 294, 313, 353, 392, 405, 479] 

값, dict 값 == 현재 클러스터 인덱스 인 경우 문장 ID를 문장 목록에 씁니다.

계속 100 번.

cluster_dict = defaultdict(list) 
    num_clusters = 100 

    for cluster in xrange(0,num_clusters): 
     print "\nCluster %d" % cluster 

     sentences = [] 
     for i in xrange(0,len(my_id_dict.values())): 
      if(my_id_dict.values()[i] == cluster): 
       sentences.append(my_id_dict.keys()[i]) 

     cluster_dict[cluster] = sentences 
     print sentences[:10] 

이 작동하지만 너무 느립니다. 내가 이것을 할 수있는 더 빠른 방법이 있습니까?

답변

1

각 클러스터에 대해 모든 문장을 검토하고 있습니다. 각 문장을 한 번 클러스터에 할당하면됩니다.

cluster_dict = defaultdict(list) 
for sentence, cluster in my_id_dict.items(): 
    cluster_dict[cluster].append(sentence) 
관련 문제