筛选出受邀参加聚会的团队成员

问题描述 投票:0回答:1

我有一份大约 300 人的团队成员名单。还有另一份聚会受邀者名单,约 4,000 人。我如何知道哪些团队成员被邀请参加聚会?

这是一个缩小的例子。请注意,受邀者姓名的格式不同:

my_team_list = ['Andy', 'Bernice', 'Charlotte', 'David', 'Evan']
invitee_list = ['Mandy (Team A)', 'Navin - Team A', 'Olive Team B', 'Peter Team C', 'Queenie (D)', 'Royston -D team', 'Steven (E team)', 'Tammy (E team)', 'Bernice (Z team)', 'Victor (A Team)', 'Wendy (Team B)', 'David (Team Z)']

for name in my_team_list:
    for invitee in invitee_list:
        if name in invitee:
            print(invitee)

#output
Bernice (Z team)
David (Team Z)

上面的代码是暴力破解的例子,但是时间复杂度是O(n x m)。我想知道是否有更有效的方法来完成此任务?

python list for-loop
1个回答
0
投票

看起来您在两个列表中都只有名字。因此,您可以通过按空间分割来清理

invitee_list
,然后进行设置交集。

my_team_list = ['Andy', 'Bernice', 'Charlotte', 'David', 'Evan']
invitee_list = ['Mandy (Team A)', 'Navin - Team A', 'Olive Team B', 'Peter Team C', 'Queenie (D)', 'Royston -D team', 'Steven (E team)', 'Tammy (E team)', 'Bernice (Z team)', 'Victor (A Team)', 'Wendy (Team B)', 'David (Team Z)']

for i in range(len(invitee_list)):
    invitee_list[i] = invitee_list[i].split(" ")[0]

print(set(my_team_list)&set(invitee_list))
© www.soinside.com 2019 - 2024. All rights reserved.