2014-01-10 6 views
-1

내가 반경 k의 원이 그려있는 위에 좌표의 임의의 배열을파이썬 가입 사전 기능?

cluster={"discs":set([i,j]), 
     "left":x[i]<k or x[j]<k, 
     "right":x[i]>(1-k) or x[j]>(1-k)} 

for some_cluster in cluster: 
    some_discs_set = some_cluster['discs'] 
    for some_other_cluster in cluster: 
     some_other_discs_set = some_other_cluster['discs'] 
     if some_cluster is some_other_cluster: 
      continue 
     discs_in_both_sets = set(some_discs_set).intersection(set(some_other_discs_set)) 

    if len(discs_in_both_sets) != 0: #merge l/r boundaries 
     some_cluster['discs'] = some_discs_set.union(some_other_discs_set) 
     some_other_cluster['discs'] = {} 

filtered_cluster = filter(lambda x: len(x['discs']), cluster) 

내가 나타났습니다 (순간을 위해 좌/우 키를 무시)이 코드는 거의 모든 시간을 작동하지만 그 세 개의 디스크가 겹쳐지고 네 번째 디스크가 중첩되는 시간이 있습니다. 사전은 세 개 디스크가 아니라 네 개가 아닌 것으로 나타납니다. 내가 뭘 놓치고 있니? 특정 디스크를 놓치지 않는 반복 때문에 발생해야한다고 생각하지만 확실하지 않습니다. 파이썬 2.7.3를 사용

들으

당신이 원하는 경우
+0

만 보여 코드 그것들의 모음이 아닌 하나의'cluster' 사전을 생성합니다. 귀하의 실제 코드가 이러한 dicts 또는 그 목록을 작성합니까? 'i'와'j' 값의 출처는 어디입니까? [짧고, 독립적 인, 올바른 예] (http://sscce.org)를 만들어보십시오. – Blckknght

답변

0

당신이 클러스터가 dictonary의 목록입니다 필요한이

for some_cluster in cluster: 

...