2011-07-08 248 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)] 
相關問題