python - 使用 lambda 进行复杂排序

标签 python lambda

有没有办法使用 lambda 表达式执行以下 python sort 操作?

sorted_urls = []
for url in all_urls:
    if '/en-' in url:
        sorted_urls.insert(0, url)
    else:
        sorted_urls.append(url)

second_sorted_urls = []
for url in sorted_urls:
    if '/season-' not in url:
        second_sorted_urls.insert(0, url)
    else:
        second_sorted_urls.append(url)

换句话说,我想按以下方式排序:'season-' not in url ASC, 'en' in url ASC

最佳答案

是的。元组自然按每个元素依次排序, bool 值排序 False < True ,所以只需使用 lambda 给出元组键:

sorted_urls = sorted(all_urls, key=lambda x: ('season-' in x, 'en' not in x))

bool 值被反转,因为 False值将被排序到排序列表的开头。您还可以使用sorted(all_urls, key=lambda x: ('season-' not in x, 'en' in x), reverse=True)) .

关于python - 使用 lambda 进行复杂排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35307376/

相关文章:

python - key 错误 : "Can' t open attribute (Can't locate attribute: 'nb_layers' )"

python - 许多列表的总和

java - 为什么使用 lambda 表达式实现 Cucumber stepdef 是一个很好的实践?

c++ - 如何禁用隐式 lamba 变量捕获?

java - 使用 java 8 查找列表中不存在于另一个列表中的元素

python - 使用 South 创建 Django 缓存表?

python - 如何在替代包名称下安装 Python wheel? (在我的具体情况下,PyCryptodome 在 "Cryptodome"包名下)

python - 如何按天拆分 Pandas 数据框或系列(可能使用迭代器)

java - 当我将 lambda 表达式作为参数传递时,它怎么可能访问此范围内的其他变量?

java - 后缀数组实现错误