执行以下模式的更好方法是什么?
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)
