如何通过字符串尾随编号从列表中选择项目

时间:2017-08-30 15:56:38

标签: python list python-3.6

我试图制作一个应用程序,以便在文件夹中找到最新的动漫剧集。 我现在处于以下格式的项目列表中: episode_name - ep_num即。 naruto - 11naruto - 12bleach - 11bleach - 12等我已将其全部保存到列表中,但我找不到找到所有系列最新剧集的方法

所以我需要一种方法来为每个系列创建一个只有anime_name - latest_ep_num的新列表,这样我就可以检查某个网站上是否有新剧集。

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容来获得最大值

max(anime_list, key = lambda x: int(x.split('-')[1]))

一个例子来区分不同的系列,并获得每个系列的最大值:

anime_list = ['naruto - 11', 'naruto - 12', 'naruto - 13','not naruto - 12','not naruto - 13']
import itertools
g = itertools.groupby(anime_list,lambda x: x.split('-')[0])
f = [(series, max(list(episode),key=lambda x: x.split('-')[1])) for series,episode in g]

如果你的名字中有破折号的剧集,而不是在剧集编号之前,你可以使用以下的帮助函数来分隔剧集名称/编号。

import re

episode = 'naruto - o no dash - 12'

def split_episodes(episode):
    ep = re.split('( - )',episode)
    return [''.join(ep[0:-2]), ep[-1]]

print(split_episodes(episode))

答案 1 :(得分:0)

假设你有:

function _group_by($array, $key) {
    $return = array();
    foreach($array as $val) {
        $return[$val[$key]][] = $val;
    }
    return $return;
}
$newArray = _group_by($array, 1); // (NO SUCCESS)

@Solaxun的积分。我最初做了:

l = ['naruto - 11',  'naruto - 13', 'naruto - 12']
max(l, key = lambda x: int(x.split('- ')[1]))

什么不比第一个选项好。

相关问题