2011-07-08 250 views
1
x= [0,2,3,5,6]; 
y= [64,384,1024,4096,384]; 

以上是我使用的两个数组。即时通讯试图元素在Python的方式一起匹配Python,匹配两个列表的元素

例如:

如果xType是2我想计算称为yType到y中对应于其值(位置明智)变量。所以我应该得到y = 384。如果xType = 3我应该得到1024

如何,我会去这样做

+0

听起来像你想的字典,请参阅http://docs.python。 org/library/stdtypes.html#typesmapping – Dylan

回答

5

这是如此短暂,甚至堆栈溢出没有请允许我提出这样一个简短的回答:

y[x.index(2)] 

这将从y归元对应的位置或x列表中的任何其他给定值。

希望它帮助:)

Ps。确实dictionaries可能是你需要的东西。尝试使用它们。

+0

谢谢大家,这是我需要的。但我也喜欢字典和地图的概念。我会研究他们。非常感谢你 – kal

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

查找“在Python地图”或类似的东西

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更有效

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

但是,如果您还需要查找y中的元素,你也需要一个yxmap。如果您因为某种原因需要列表(可能是因为您在程序过程中修改了这些列表),则可以使用i = x.index(2),然后使用y[i]

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)] 
相关问题