how to sort a list of tuples with custom function

Glenn Linderman v+python at g.nevcal.com
Tue Aug 1 18:02:27 EDT 2017


On 8/1/2017 2:10 PM, Piet van Oostrum wrote:
> Ho Yeung Lee <jobmattcon at gmail.com> writes:
>
>> def isneighborlocation(lo1, lo2):
>>      if abs(lo1[0] - lo2[0]) < 7  and abs(lo1[1] - lo2[1]) < 7:
>>          return 1
>>      elif abs(lo1[0] - lo2[0]) == 1  and lo1[1] == lo2[1]:
>>          return 1
>>      elif abs(lo1[1] - lo2[1]) == 1  and lo1[0] == lo2[0]:
>>          return 1
>>      else:
>>          return 0
>>
>>
>> sorted(testing1, key=lambda x: (isneighborlocation.get(x[0]), x[1]))
>>
>> return something like
>> [(1,2),(3,3),(2,5)]
> I think you are trying to sort a list of two-dimensional points into a
> one-dimensiqonal list in such a way thet points that are close together
> in the two-dimensional sense will also be close together in the
> one-dimensional list. But that is impossible.
It's not impossible, it just requires an appropriate distance function 
used in the sort.



More information about the Python-list mailing list