Skip to main content
 首页 » 编程设计

python之如何减少 if/elif 语句中的重复代码

2025年05月04日14落叶

执行以下模式的更好方法是什么?

for platform_id in previous_platform_ids: 
    if self.series.get(platform_id): 
        del self.series[platform_id] 
    elif self.seasons.get(platform_id): 
        del self.seasons[platform_id] 
    elif self.episodes.get(platform_id): 
        del self.episodes[platform_id] 
    elif self.movies.get(platform_id): 
        del self.movies[platform_id] 
    elif self.bundles.get(platform_id): 
        del self.bundles[platform_id] 

基本上,我想遍历一堆 id 并从包含它的列表中删除该 id。

请您参考如下方法:

self.series.pop(platform_id,None) 
self.seasons.pop(platform_id,None) 
self.episodes.pop(platform_id,None) 
self.movies.pop(platform_id,None) 
self.bundles.pop(platform_id,None) 

似乎它会做同样的事情(或者实际上不完全是这会从所有字典中删除它( key )不仅存在于它找到的第一个字典中,您的代码只会删除它找到的第一个实例...不确定这是不是故意的)

当然你可以做类似的事情

for content_type in content_types: 
    getattr(self, content_type).pop(platform_id,None) 

如果你只想删除你找到的第一个你可以做

 content_dicts = [self.series,self.seasons,self.episodes,self.movies,self.bundles] 
 next(x.pop(platform_id,None) for x in content_dicts if platform_id in x)