Python,匹配两个列表的元素

时间:2011-07-08 00:07:49

标签: list python elements matching

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

以上是我正在使用的两个阵列。我试图以pythonic的方式将元素匹配在一起

示例:

如果xType为2,我想计算一个名为yType的变量,以对应y中的值(位置明智)。所以我应该y = 384。如果xType = 3我应该得到1024。

我将如何做到这一点

5 个答案:

答案 0 :(得分: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)]

答案 1 :(得分:5)

这是如此之短,即使Stack Overflow也不允许我提交这么简短的答案:

y[x.index(2)]

这将返回y对应于2位置的元素或x列表中的任何其他给定值。

希望它有所帮助:)

聚苯乙烯。确实dictionaries可能是你需要的东西。尝试使用它们。

答案 2 :(得分: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's answer效率更高

答案 3 :(得分:2)

a = {0: 64, 2:384, ...}

查找'python中的地图'或类似的内容

答案 4 :(得分:2)

>>> xymap = dict(zip(x, y))
>>> xymap[2]
384

但是,如果您还需要在x中查找y的元素,那么您还需要yxmap。如果您出于某种原因需要将这些列表作为列表(可能是因为您在程序过程中对其进行了修改),则可以使用i = x.index(2)然后使用y[i]