首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从列表中选择优先级项目

从列表中选择优先级项目
EN

Stack Overflow用户
提问于 2021-11-05 20:26:03
回答 2查看 60关注 0票数 2

假设我有一个按偏好排序的降序列表:

代码语言:javascript
运行
复制
person_choice = ['amy', 'bob', 'chad', 'dan', 'emily']

这意味着,amybob更好,而chad则更好,依此类推。

我还有两个类似的列表(名称没有特定的顺序和列表长度):

代码语言:javascript
运行
复制
group1 = ['joyce', 'amy', 'emily', 'karen', 'rebecca']
group2 = ['chad', 'kyle', 'michael', 'neo', 'bob']
...

在每个group1group2中,我想选择此列表中显示在person_choice中具有最高首选项的人员。因此,预期输出如下所示:

代码语言:javascript
运行
复制
group1_choice = 'amy'
group2_choice = 'bob'

假设对于每个groupX,至少有一个人出现在person_choice中,那么在Python语言中有没有一行程序可以在没有复杂的for循环的情况下做到这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-05 20:38:42

在自定义key中使用max

代码语言:javascript
运行
复制
person_choice = ['amy', 'bob', 'chad', 'dan', 'emily']

group1 = ['joyce', 'amy', 'emily', 'karen', 'rebecca']
group2 = ['chad', 'kyle', 'michael', 'neo', 'bob']


def choice(group):
    return max(group, key=lambda name: -person_choice.index(name) if name in person_choice else float('-inf'))


print(choice(group1))
print(choice(group2))

结果:

代码语言:javascript
运行
复制
amy
bob
票数 3
EN

Stack Overflow用户

发布于 2021-11-05 20:37:30

这是两行代码,但它应该可以工作:

代码语言:javascript
运行
复制
ranks = {
    person: i
    for i, person in enumerate(reversed(person_choice))
}

max(
    group1,
    key=lambda x: ranks.get(x, -1)
)

从本质上讲,我们将排名放入字典中,以便快速查找。然后,我们可以使用Python的min来搜索我们的优先项。在本例中,我颠倒了列表并使用了max,因此-1可以用作不在列表中的人的优先级。

下面是它在上下文中可能的样子:

代码语言:javascript
运行
复制
group1 = ['joyce', 'amy', 'emily', 'karen', 'rebecca']
group2 = ['chad', 'kyle', 'michael', 'neo', 'bob']
person_choice = ['amy', 'bob', 'chad', 'dan', 'emily']

ranks = {
    person: i
    for i, person in enumerate(reversed(person_choice))
}


def group_choice(group, ranks):
    return max(
        group,
        key=lambda x: ranks.get(x, -1)
    )


print(group_choice(group1, ranks))
print(group_choice(group2, ranks))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69858906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档