在text widget中,索引用于指向文本小部件处理的文本中的位置。使用“line.column”形式的字符串索引标记文本小部件中带有文本的位置。行号从1开始,而列号从0开始。
问题是如何对索引列表进行排序?例如:
unsorted_indexes = ['1.30', '1.0', '1.25', '3.10', '3.100', '3.1', '3.8']
# expected result: ['1.0', '1.25', '1.30', '3.1', '3.8', '3.10', '3.100']
# cant sort as strings:
print(sorted(unsorted_indexes))
# gives incorrect values: ['1.0', '1.25', '1.30', '3.1', '3.10', '3.100', '3.8']
# cant convert to float
print(sorted([float(index) for index in unsorted_indexes]))
# [1.0, 1.25, 1.3, 3.1, 3.1, 3.1, 3.8]
如果您将字符串索引转换为其他形式,那么当然您需要回到原始表单。在上面的示例中,执行float('3.1')
和float('3.100')
会导致浮点值为3.1
。无法返回'3.1'或'3.100'。或者也许在tkinter中已经存在一些机制,我很想念它?
答案 0 :(得分:2)
希望这可以帮到你: 代码如下:
>>> unsorted_indexes = ['1.30', '1.0', '1.25', '3.10', '3.100', '3.1', '3.8']
>>> unsorted_indexes.sort(key=lambda x: [x.split('.')[0], int(x.split('.')[1])])
>>> unsorted_indexes
['1.0', '1.25', '1.30', '3.1', '3.8', '3.10', '3.100']
>>>