| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
在网上找个排序的代码, 
排序是正常的 
但是有个问题, 
就是序号的数字是字符 
就无法按照数字的大小进行排序 
而是按数字的第1位进行排序: 
如:14,15,20,25,26,4,41,5,51 
 
想了半天也没有发现问题在哪里??? 
请教高手,谢谢!!! 
 
 
代码如下: 
def treeview_sort_column(tv, col, reverse):  # Treeview、列名、排列方式 
    l = [(tv.set(k, col), k) for k in tv.get_children('')] 
    #print(tv.get_children('')) 
    l.sort(reverse=reverse)  # 排序方式 
    # rearrange items in sorted positions 
    for index, (val, k) in enumerate(l):  # 根据排序后索引移动 
        tv.move(k, '', index) 
       # print(k) 
    tv.heading(col, command=lambda: treeview_sort_column(tv, col, not reverse))  # 重写标题,使之成为再点倒序的标题 
 
那是因为字符串比较大小就是从第一个字符开始比较unicode码值,只要能比出个结果就不往后继续比较了 
 
你把整数字符串转成整数类型就好 
 
def treeview_sort_column(tv, col, reverse):  # Treeview、列名、排列方式 
    l = [(tv.set(k, col), int(k)) for k in tv.get_children('')] 
    #print(tv.get_children('')) 
    l.sort(reverse=True)  # 排序方式 
    # rearrange items in sorted positions 
    for index, (val, k) in enumerate(l):  # 根据排序后索引移动 
        tv.move(k, '', index) 
       # print(k) 
    tv.heading(col, command=lambda: treeview_sort_column(tv, col, not reverse))  # 重写标题,使之成为再点倒序的标题 
 
 
 |   
 
 
 
 |