Python,匹配两个列表的元素

1 投票
5 回答
8711 浏览
提问于 2025-04-16 21:04
x= [0,2,3,5,6];
y= [64,384,1024,4096,384];

上面是我正在使用的两个数组。我想用一种Python风格的方法把它们的元素匹配在一起。

举个例子:

如果 xType 是 2,我想计算一个叫 yType 的变量,让它对应于在数组y中的位置值。所以我应该得到 y = 384。如果 xType = 3,我应该得到 1024。

我该怎么做呢?

5 个回答

3

如果x里的元素都是独一无二的,你可以把它们当作字典(dict)里的键,这样就能根据这些键快速找到y中对应位置的元素。就像这样:

x = [0,2,3,5,6]
y = [64,384,1024,4096,384]

y_from_x = dict(zip(x,y))

print y_from_x[2] # prints 384
print y_from_x[3] # prints 1024

这种方法很适合需要进行很多查找的情况,但如果你只想查找一次的话,Tadeck的回答会更有效率。

6

如果你想从你给的两个列表中生成一个 dict(字典),可以使用 zip 函数:

>>> x = [0,2,3,5,6]
>>> y = [64,384,1024,4096,384]
>>> dict(zip(x, y))
{0: 64, 2: 384, 3: 1024, 5: 4096, 6: 384}

还有,别忘了去掉那些分号!

如果你不需要字典这种映射类型,只是想把两个列表中的元素配对,光用 zip 就可以了:

>>> zip(x, y)
[(0, 64), (2, 384), (3, 1024), (5, 4096), (6, 384)]
5

这段话太短了,连Stack Overflow都不让我提交这么简短的回答:

y[x.index(2)]

这段代码会从 y 中返回与 x 列表中位置为 2 或其他给定值对应的元素。

希望这对你有帮助 :)

另外,确实 字典 可能是你需要的东西。试试看使用它们吧。

撰写回答