Python 使用lambda表达式按多个条件对文件排序

Python 使用lambda表达式按多个条件对文件排序,python,lambda,Python,Lambda,我想按以下顺序对其进行排序: 满前增量 电视前的电影电视前的一季 我该怎么做呢?到目前为止,我有: Full_Movie_da-DK_11-31-17.tsv Full_Movie_de-AT_11-31-17.tsv Full_Movie_de-CH_11-31-17.tsv Full_Movie_de-DE_11-31-17.tsv Full_TvEpisode_da-DK_11-31-17.tsv Full_TvEpisode_de-AT_11-31-17.tsv Full_TvEpiso

我想按以下顺序对其进行排序:

  • 满前增量
  • 电视前的电影电视前的一季
  • 我该怎么做呢?到目前为止,我有:

    Full_Movie_da-DK_11-31-17.tsv
    Full_Movie_de-AT_11-31-17.tsv
    Full_Movie_de-CH_11-31-17.tsv
    Full_Movie_de-DE_11-31-17.tsv
    Full_TvEpisode_da-DK_11-31-17.tsv
    Full_TvEpisode_de-AT_11-31-17.tsv
    Full_TvEpisode_de-CH_11-31-17.tsv
    Full_TvEpisode_de-DE_11-31-17.tsv
    Full_TvSeason_da-DK_11-31-17.tsv
    Full_TvSeason_de-AT_11-31-17.tsv
    Full_TvSeason_de-CH_11-31-17.tsv
    Increment_Movie_da-DK_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_Movie_de-AT_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_Movie_de-CH_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_Movie_de-DE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_TvEpisode_da-DK_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_TvEpisode_de-AT_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_TvEpisode_de-CH_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_TvEpisode_de-DE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_TvSeason_da-DK_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_TvSeason_de-AT_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    Increment_TvSeason_de-CH_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv
    

    但这似乎与我想要的顺序相反。这里的正确语法是什么?

    因为lambda函数在True(1)之前排序False(0)。您需要确保参数的计算结果为
    False
    ,以便它首先出现。这样,正确的表达应该是:

    >>> files = ['Full_Movie_da-DK_11-31-17.tsv', 'Full_Movie_de-AT_11-31-17.tsv', 'Full_Movie_de-CH_11-31-17.tsv', 'Full_Movie_de-DE_11-31-17.tsv', 'Full_Movie_en-AU_11-31-17.tsv', 'Full_Movie_en-CA_11-31-17.tsv', 'Full_Movie_en-GB_11-31-17.tsv', 'Full_Movie_en-IE_11-31-17.tsv', 'Full_Movie_en-NZ_11-31-17.tsv', 'Full_Movie_en-US_11-31-17.tsv', 'Full_Movie_es-ES_11-31-17.tsv', 'Full_Movie_es-MX_11-31-17.tsv', 'Full_Movie_fi-FI_11-31-17.tsv', 'Full_Movie_fr-BE_11-31-17.tsv', 'Full_Movie_fr-CA_11-31-17.tsv', 'Full_Movie_fr-CA_11-31-17.tsv.bz2', 'Full_TvEpisode_da-DK_11-31-17.tsv', 'Full_TvEpisode_de-AT_11-31-17.tsv', 'Full_TvEpisode_de-CH_11-31-17.tsv', 'Full_TvEpisode_de-DE_11-31-17.tsv', 'Full_TvEpisode_en-AU_11-31-17.tsv', 'Full_TvEpisode_en-CA_11-31-17.tsv', 'Full_TvEpisode_en-GB_11-31-17.tsv', 'Full_TvEpisode_en-IE_11-31-17.tsv', 'Full_TvEpisode_en-NZ_11-31-17.tsv', 'Full_TvEpisode_en-US_11-31-17.tsv', 'Full_TvEpisode_es-ES_11-31-17.tsv', 'Full_TvEpisode_es-MX_11-31-17.tsv', 'Full_TvEpisode_fi-FI_11-31-17.tsv', 'Full_TvEpisode_fr-BE_11-31-17.tsv', 'Full_TvSeason_da-DK_11-31-17.tsv', 'Full_TvSeason_de-AT_11-31-17.tsv', 'Full_TvSeason_de-CH_11-31-17.tsv', 'Full_TvSeason_de-DE_11-31-17.tsv', 'Full_TvSeason_en-AU_11-31-17.tsv', 'Full_TvSeason_en-CA_11-31-17.tsv', 'Full_TvSeason_en-GB_11-31-17.tsv', 'Full_TvSeason_en-IE_11-31-17.tsv', 'Full_TvSeason_en-NZ_11-31-17.tsv', 'Full_TvSeason_en-US_11-31-17.tsv', 'Full_TvSeason_es-ES_11-31-17.tsv', 'Full_TvSeason_es-MX_11-31-17.tsv', 'Full_TvSeason_fi-FI_11-31-17.tsv', 'Full_TvSeason_fr-BE_11-31-17.tsv', 'Increment_Movie_da-DK_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_de-AT_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_de-CH_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_de-DE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_en-AU_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_en-CA_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_en-GB_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_en-IE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_en-NZ_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_en-US_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_es-ES_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_es-MX_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_fi-FI_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_Movie_fr-BE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_da-DK_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_de-AT_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_de-CH_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_de-DE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_en-AU_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_en-CA_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_en-GB_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_en-IE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_en-NZ_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_en-US_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_es-ES_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_es-MX_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_fi-FI_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvEpisode_fr-BE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_da-DK_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_de-AT_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_de-CH_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_de-DE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_en-AU_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_en-CA_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_en-GB_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_en-IE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_en-NZ_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_en-US_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_es-ES_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_es-MX_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_fi-FI_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv', 'Increment_TvSeason_fr-BE_2016-02-19_11-48-26_2016-02-20_11-31-17.tsv']
    
    >>> sorted(files, key= lambda x: ('Increment' in x, 'Movie' in x, 'TvSeason' in x, 'TvEpisode' in x))
    

    “有点不对劲”?!我希望你的销售代表能给我更好的描述。你能给未来的读者提供一个更好的“有点不对劲”的描述吗?你需要一个
    《电视季》之后的
    @wrkyle谢谢你的反馈。更新。
    sorted(files, key=lambda x: (
                       ('Increment' not in x),
                       ('Movie' not in x),
                       ('TvSeason' not in x), 
                       ('TvEpisode' not in x)
                   )
          )