Python 3.7 List.pop 按名称而不是索引



我有一个从网页抓取脚本收集的列表,但是我不需要返回的所有值。我想从第一个列表中弹出特定项目并将它们放入第二个列表中,然后在脚本的其余部分使用第二个列表。

我有代码,所以我可以通过列表索引来做到这一点。但是,为了使用途更广,我想按项目名称进行。例如,pop 只是Tag: football因为第一个列表可能会更改顺序或大小。

当前第一个列表:

List1 = [Tag: American Football, Tag: Athletics, Tag: Australian Rules, Tag: Awards, Tag: Badminton, Tag: Baseball, Tag: Basketball, Tag: Bowls, Tag: Boxing, Tag: Cheltenham Festival, Tag: Chess, Tag: Cricket, Tag: Cycling, Tag: Darts, Tag: Football, Tag: Gaelic Games, Tag: Golf, Tag: Greyhounds, Tag: Handball, Tag: Harness Racing, Tag: Horse Racing, Tag: Ice Hockey, Tag: Motorsport, Tag: Novelty, Tag: Politics, Tag: Pool, Tag: Rugby League, Tag: Rugby Union, Tag: Snooker, Tag: TV, Tag: Table Tennis, Tag: Tennis, Tag: UFC/MMA, Tag: Volleyball, Tag: Winter Sports]

预期的第二份名单:

List2 = [Tag: Football, Tag: Horse Racing]

法典:

List1 = [Tag: American Football, ...] 
List2 = []
List2.append(List1.pop(15))

我建议这取决于您使用的库。 似乎这个Tag类型是其中的一个类。 您必须浏览列表,搜索访问其属性所需的对象,将此对象附加到第二个列表并从第一个列表中删除。

例:

def custom_pop(list1: list, value):
obj = next((tag for tag in list1 if tag.ATTRIBUTE == value), None)
if obj:
list1.remove(obj)
return obj

之后,将此 obj 附加到第二个列表中。

最新更新