如何通过字符串尾随数字从列表中选择一个项目
How to pick an item from list by strings trailing number
我正在尝试制作一个应用程序来查找文件夹中的最新动漫剧集。
我现在处于以下格式的项目列表的地步:
episode_name - ep_num
即。 naruto - 11
、naruto - 12
、bleach - 11
、bleach - 12
等,我已将其全部保存到列表中,但我无法找到一种方法来找到所有系列的最新一集.
所以我需要一种方法来创建一个新列表,其中只包含:anime_name - latest_ep_num
每个系列,这样我就可以检查某个网站上是否有新剧集。
假设你有:
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]
没有什么比第一个选项更好的了。
您可以使用类似下面的方法来获得最大输出
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))
我正在尝试制作一个应用程序来查找文件夹中的最新动漫剧集。
我现在处于以下格式的项目列表的地步:
episode_name - ep_num
即。 naruto - 11
、naruto - 12
、bleach - 11
、bleach - 12
等,我已将其全部保存到列表中,但我无法找到一种方法来找到所有系列的最新一集.
所以我需要一种方法来创建一个新列表,其中只包含:anime_name - latest_ep_num
每个系列,这样我就可以检查某个网站上是否有新剧集。
假设你有:
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]
没有什么比第一个选项更好的了。
您可以使用类似下面的方法来获得最大输出
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))