我有一個list,list里面的element是dict。[{centre:(743,1105), radius: 41},{centre:(743, 1106), radius: 48},{centre:(899, 1443), radius: 48},{centre:(900, 1442), radius: 40}]這個關于圓心和半徑的一個數據結構。我想把圓心相近的圓(橫坐標相差+3/-3 左右)去掉一個(保留半徑較小的)def takeXAxis(input): return input['centre'][0]def sortCircles(circleDetails):
circleDetails.sort(key=takeXAxis)def removeClosedCircle(circleDetails):
newCircleDetails = [] for i in range(len(circleDetails)):
j = i + 1
for j in range(len(circleDetails)):
...接下來我就不太會了,有人能幫我看下嗎?
2 回答

臨摹微笑
TA貢獻1982條經驗 獲得超2個贊
import itertools my_list = [ {'centre':(743,1105), 'radius': 41}, {'centre':(743, 1106), 'radius': 48}, {'centre':(899, 1443), 'radius': 48}, {'centre':(900, 1442), 'radius': 40} ]for a, b in itertools.combinations(my_list, 2): # only need to do something if the diff is in range.. if abs(a['centre'][0] - b['centre'][0]) <= 3: # check the radius, if bigger, remove it, else remove the other. if a['radius'] > b['radius']: my_list.remove(a) else: my_list.remove(b)print my_list
添加回答
舉報
0/150
提交
取消