['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/