python-3.x - 在字符串之前对整数进行排序的高效和 Pythonic 方法
问题描述
所以我想在 Python 3 中编写一个有效的排序方法:
x = ["aa", "5", 5, "12", 12]
x.sort(key=???)
print x // prints [5, 12, "12", "5", "aa"]
它可以想象解决方案,但它们都涉及为每次比较动态构造对象,并且它们感觉不到pythonic。
这里一定有好的设计方案,我只是不考虑...
解决方案
编写一个根据类型返回唯一值的键,然后是值本身。我假设您也希望浮点数在字符串之前,所以假设您希望字符串最后,其他任何东西都先。
def strings_last(x):
"""When sorting, ensure strings are last."""
if isinstance(x, str):
return 1, x
else:
return 0, x
x = ["aa", "5", 5, "12", 12]
sorted(x, key=strings_last)
# [5, 12, "12", "5", "aa"]
推荐阅读
- c# - 显式忽略为控制器操作提供的令牌
- typescript - 基于预期函数类型参数的打字稿推断
- java - 如何确保 Stage 作为窗口而不是选项卡打开?
- delphi - Delphi6 代码:一个简单的 hello world 应用程序,调用 form2.bpl 但碰壁了
- verification - ==> 在箴言中是什么意思?
- java - 线程本地缓存的变量在更新后何时与“主内存”保持一致?
- tensorflow-federated - TFF:两种类型有什么区别?
- ajax - OpenWeather Api 调用中的 ERR_NAME_NOT_RESOLVED
- r - 将字符列拆分/分隔为具有指定名称和格式的多列
- rest - Alfresco REST Core API 按路径查找节点