2017-08-30 62 views
1

我试图让应用程序在文件夹中找到最新的动画片段。 我现在在我有以下格式的项目列表: ie。 naruto - 11,naruto - 12,bleach - 11,bleach - 12等等,我把它全部保存到列表中,但我找不到找到所有系列的最新情节的方法。如何从列表中选择一个项目由字符串尾号

所以我需要一种方法来创建一个新的列表,只有:anime_name - latest_ep_num为每个系列,所以我可以然后检查一个新的情节是否在某些网站上。

回答

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)) 
+0

谢谢你,作品像一个魅力。虽然有一个问题,这里是一个打印样本:'('Kyoukai','Kyoukai no Rinne-51'),('M3','M3 - Sono Kuroki Hagane - 03'),('Made','Made在深渊 - 07')'。现在即时猜测lambda x:x.split()[0],正在分割字符串并获取第一个索引,并将其转换为该系列的“key”。我想我可以以某种方式远程控制,当我回到我的编码PC时,生病必须检查。 – Nanoni

+0

我没有所有的输入,所以我假设格式总是'系列 - 剧集',并且在'-'上分割。如果实际系列名称本身包含'-',则会出现问题。 – Solaxun

+0

实际上,即使系列中有“ - ”的实际名称,代码也可以完美工作。我遇到的唯一问题是索引[0]被插入到列表中,所以列表出现为“火影忍者”,“火影忍者 - 10”,但很容易用“在f: latest_list.append(line [1])''所以我只添加了[1]索引,并且只有动画名称和最新的ep num。 – Nanoni

0

假设您有:

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

贷@Solaxun。我最初做的:

l = ['naruto - 11', 'naruto - 13', 'naruto - 12'] 
sorted([i.split('- ') for i in l])[-1] 

什么不比第一个选项更好。

相关问题