python - 在 Python 中排序名称列表,忽略数字?

标签 python list sorting dictionary

['7', 'Google', '100T', 'Chrome', '10', 'Python']

我希望结果是最后的所有数字,其余的排序。数字不需要排序。

Chrome
Google
Python
100T
7
10

虽然它稍微复杂一些,因为我按值对字典进行排序。

def sortname(k): return get[k]['NAME']
sortedbyname = sorted(get,key=sortname)

我在两个答案都发布后才添加了 100T,但接受的答案仍然有效,我在评论中发布了一个轻微的修改。为澄清起见,应对匹配 ^[^0-9] 的名称进行排序。

最佳答案

我一直在努力让字典版本正常工作,所以这是供您推断的数组版本:

def sortkey(x):
    try:
        return (1, int(x))
    except:
        return (0, x)

sorted(get, key=sortkey)

基本原则是创建一个元组,其第一个元素的作用是将所有字符串组合在一起,然后是所有整数。不幸的是,没有优雅的方法可以在不使用异常的情况下确认字符串是否恰好是 int,这在 lambda 中不太适用。我最初的解决方案使用正则表达式,但自从从 lambda 转换为独立函数后,我想我还是选择简单的选项。

关于python - 在 Python 中排序名称列表,忽略数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4058455/

相关文章:

c# - 如何使用下拉列表对 gridview 进行排序

python - Python Opencv 新手 : Motion Tracking using webcam Thresholding/dilate

list - 将列表列表写入表格,将每个列表的名称作为一列?

list - Flutter 将搜索数据传递给 SearchDelegate

javascript - 显示与类同名的 id 元素

algorithm - 来自两个不同图像的点匹配算法

python - 排序列表升序然后降序

python - 使用jinja传递的上下文中的键访问jinja2中dict中的元素

python - 如何存储正则表达式中的关键术语列表(或字典)? -Python

python - 如何比较两个 sklearn 估计量是否相等?