相关疑难解决方法(0)

Python是否具有用于字符串自然排序的内置函数?

使用Python 3.x,我有一个字符串列表,我想对其执行自然的字母排序.

自然排序: Windows中文件的排序顺序.

例如,以下列表是自然排序的(我想要的):

['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Run Code Online (Sandbox Code Playgroud)

这是上面列表的"排序"版本(我有):

['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个行为与第一个类似的排序函数.

python sorting python-3.x

249
推荐指数
9
解决办法
8万
查看次数

通过字母数字列对PySide.QtGui.QTreeWidget进行排序

我想QTreeWidgetalpha_numeric专栏排序.

更新:

按照ekhumoro的例子,我重新实现了QTreeWidgetItem __lt__使用所需自然排序的方法.

相关代码:

class TreeWidgetItem(QtGui.QTreeWidgetItem):
    def __lt__(self, other):
        column = self.treeWidget().sortColumn()
        key1 = self.text(column)
        key2 = other.text(column)
        return self.natural_sort_key(key1) < self.natural_sort_key(key2)

    @staticmethod
    def natural_sort_key(key):
        regex = '(\d*\.\d+|\d+)'
        parts = re.split(regex, key)
        return tuple((e if i % 2 == 0 else float(e)) for i, e in enumerate(parts))
Run Code Online (Sandbox Code Playgroud)

更新完整的工作示例:

import sys
import re
from PySide import QtGui, QtCore

data = [
    {"name": "Apple", "alpha_numeric": "11"},
    {"name": "Apple", "alpha_numeric": "125b"},
    {"name": …
Run Code Online (Sandbox Code Playgroud)

python sorting pyqt qtreewidget pyside

5
推荐指数
1
解决办法
1235
查看次数

如何排序Django模型对象的字母数字列表

我试图解决如何在python中将字母数字集排序为Django中提出的问题的答案.我有一个查询返回的Django模型实例列表,我无法弄清楚如何使用lambda构建一个优雅(或其他!)排序函数.

如果我的模型包含'name'属性 - 例如

result = Take.objects.all()
for i in result:
   print i.name
Run Code Online (Sandbox Code Playgroud)

如何通过name属性对结果对象列表进行排序并应用多个测试?

即我的名字值可以是'1A','1','A1','001A'等

例如,给出这个顺序(基于名称)

1A
2A
10A
A1
A2
A10
A11
B2
B4
Run Code Online (Sandbox Code Playgroud)

python sorting django

2
推荐指数
1
解决办法
2717
查看次数

标签 统计

python ×3

sorting ×3

django ×1

pyqt ×1

pyside ×1

python-3.x ×1

qtreewidget ×1