坐标字符串数字大小排序

 在json 文件中,数字坐标通常是字符串,在寻求遍历最优化路径的时刻,对坐标的排序就很重要呢。

案例:key=['0_12', '5_12', '2_12', '1_12', '3_12', '4_12']

运行后的结果:

 key=['0_12', '1_12', '2_12', '3_12', '4_12', '5_12']

#quick_sort_of_vector
def oriation(a):
        a_=0
        con_a=a_con=''
        a=list(a)
        for i in range(0,len(a)-1):
            if a[i]=='_':
                  a_=i
        for i in range(0,len(a)):
            if i<a_:
                 a_con=a_con+a[i]
            elif i>a_:
               con_a=con_a+a[i]
        return int(a_con),int(con_a)
def compare_vector_size(a,b):
    a_con,con_a=oriation(a)
    b_con, con_b=oriation(b)
    if a_con==b_con and con_a>con_b:
                  print("a>b")
    elif a_con>b_con and con_a==con_b:        
                  print("a>b")
    elif a_con==b_con and con_a<con_b:        
                  print("a<b") 
    elif a_con<b_con and con_a==con_b:        
                  print("a<b")
    elif  a_con==b_con and con_a==con_b:        
                  print("a=b")
    elif a_con>b_con and con_a>con_b:        
                  print("a>b")
    elif a_con<b_con and con_a<con_b:        
                  print("a<b")
    else:
            print("error")
def quick_sort(mylist,start,end):
    if start<end:
        i,j=start,end
        base = mylist[i]
        while i<j:
                while(i<j) and (mylist[j]>=base):
                     j=j-1
                mylist[i]=mylist[j]
                while(i<j) and (mylist[i]<=base):
                      i=i+1
                mylist[j]=mylist[i]
        mylist[i]=base
        quick_sort(mylist,start,i-1)
        quick_sort(mylist,i+1,end)
    return mylist 
key=['9_12', '3_12', '2_12', '1_12', '3_12', '4_12']

def sort_vector(key):
  
    te=[]
    ans=[]
    test={}
    for i in range(0,len(key)):
        add=0
        i_con,con_i=oriation(key[i])
        add=int(i_con)+int(con_i)
     
        te.append(add)
        test[key[i]]=add
    quick_sort(te,0,len(te)-1)


    for i in range(0,len(te)):
        for h,j in test.items():
               
                if te[i]==j:
                    ans.append(h)
                    break
    return ans 
result=sort_vector(key)
print(result)
    

猜你喜欢

转载自blog.csdn.net/weixin_42528089/article/details/90239987