如何打印两个列表中综合排名最小的项目?

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

我刚刚开始使用Python,试图解决这个问题。给定两个列表,我必须打印两个列表中综合排名最小的项目。这是我目前的方法,但似乎是错误的。

rest_1 = ['pizza','potato','tomato','burger']
rest_2 = ['onion','tomato','pizza','tea']


for i in range(1,len(rest_1)):
    for j in range(1,len(rest_2)):
        if rest_1[i]==rest_2[j]:
            print(rest_2[i])

这里,答案应该是Pizza,因为它的综合排名最小。但我的逻辑肯定是错的。希望得到任何帮助。

python-3.x
1个回答
2
投票

你可以创建一个dict,将第二个列表中的项目映射到它们各自的指数上,然后遍历第一个列表中的项目,并得到第二个列表中同一项目的对应指数,计算两者的总和,并使用 min 函数来获取其中的最小值。使用无穷大(float('inf'))作为索引,以防第一个列表中的项目不在第二个列表中,所以它不会被考虑。

def least_ranked(first, second):
    mapping = dict(map(reversed, enumerate(second)))
    return min((i + mapping.get(v, float('inf')), v) for i, v in enumerate(first))[1]

这样,

least_ranked(rest_1, rest_2)

返回。'pizza'

© www.soinside.com 2019 - 2024. All rights reserved.