不区分大小写的树视图排序

case-insensitive treeview sorting

我正在使用下面的代码对 treeview 列进行排序,但它区分大小写,即如果列值为 [a,c,A],则排序后的值将为 [a,c,A],但我希望它为 [a,A,c] 甚至数字排序仅基于第一个数字,即如果 [2,1,11] 是列值,则输出将是 [1,11,2] 我希望它成为 [1,2,11]。请帮我解决这个问题。谢谢

for col in cols:
            self.treeview.heading(col, text=col,command=lambda c=col: self.sortby(self.treeview, c, 0))

def sortby(self,tree, col, descending):

            data = [(tree.set(child, col), child) \
            for child in tree.get_children('')]

            data.sort(reverse=descending)

            for ix, item in enumerate(data):
                tree.move(item[1], '', ix)

            tree.heading(col, command=lambda col=col: self.sortby(tree, col, \
                int(not descending)))
            

不区分大小写的排序是通过提供一个键映射函数来排序的。例如,sort(values, key=str.casefold) (Python 3).

在对元组的第一个值进行排序的情况下,数据排序行将变为 data.sort(reverse=descending, key=lambda t: str.casefold(t[0]))