gpt4 book ai didi

python - 将一个列表的元素映射到它们在另一个列表中的索引

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:18 26 4
gpt4 key购买 nike

我正在用 Python 比较两个列表。

list1list2 的超集。

对于 list1 的元素,我希望它们在 list2 中的索引(如果存在)。

这里有两个例子。

list1 = ['a','b','c','d']
list2 = ['a','b']

解决方案应生成 [0, 1]

list1 = ['a','b','c','d']
list2 = ['b','a']

解决方案应生成 [1, 0]

我尝试了以下代码,但它只适用于第一个示例。

list1 = ['a','b','c','d']
list2 = ['a','b']

pairwise = zip(list1,list2)
matched_index = [idx for idx, pair in enumerate(pairwise) if pair[0] == pair[1]]

这行得通。但是,对于第二组示例数据,我得到了错误的输出 [] 而不是预期的输出 [1, 0]

list1 = ['a','b','c','d']
list2 = ['b','a']

pairwise = zip (list1,list2)
matched_index = [idx for idx, pair in enumerate(pairwise) if pair[0] == pair[1]]
print(matched_index) # prints []

请提出前进的方向。

最佳答案

我建议使用字典将 list2 的元素映射到它们的索引 - 假设 list2 具有唯一元素。

>>> list1 = ['a','b','c','d']                                                                                            
>>> list2 = ['b','a']
>>> idx = {x:i for i,x in enumerate(list2)}
>>> idx
{'a': 1, 'b': 0}

现在你可以发出

>>> [idx[x] for x in list1 if x in idx]                                                                                
[1, 0]

关于python - 将一个列表的元素映射到它们在另一个列表中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com