2017-08-30 26 views

回答

1

map可以用來找到搜索元素的位置(index)。一旦找到位置,訪問其中的值將是緊湊的。

index = list(map(lambda i: i[1], tuple_exp)).index('Kumar') 
tuple_exp[index][0] 
+0

超級拉傑斯,它的好主意 – Robert

2

有一個內置的Python數據結構稱爲dict。這一個值到另一個

映射到你的元組轉換成這種結構,可以使用字典解析表達:

dc = {v: k for k, v in tuple_exp} 

這裏發生的是,tuple_exp是在同一時間返回一個元組在迭代過程中,該元組分別被解壓到變量kv。然後添加一個字典條目,其中密鑰爲v(元組中的第二個值),值爲k(元組中的第一個值)。

,其構造後,你可以使用索引操作符[]通過鍵就可以從字典中的值:

>>> dc['Kumar'] 
3 
0

好了,所以只是爲了理解,一個元組是你不能修改(反對一個列表或一個詞典)。所以我們必須找到另一種方法來做到這一點(我使用python 2.7)。

,不使用 'for' 循環,我會做這樣的:

1)實例化的元組:

> tuple_exp= (
(1, 'Raj'), 
(2, 'Robert'), 
(3, 'Kumar'), 
) 

2)轉換元組字典轉換dictionnary:

> my_dict = dict(tuple_exp) 

3)使用字典反向鍵和值zip

> inv_dict = dict(zip(my_dict.values(), my_dict.keys())) 

4)檢查

> inv_dict['Kumar'] 
> 3 
+1

這非常低效。不僅它創建了兩個字典,但它也結束了兩次循環內容 – Leva7

+0

是的,但至少與你相反,我做了它沒有一個可見的'for'循環這是這裏的問題(如果你沒有仔細閱讀)。但我沒有說任何事情,因爲如果沒有任何討論。 –

+0

我讀過這個問題。沒有for循環就沒有辦法做到這一點。而你決定交易一個顯式循環來表示兩個隱式循環。 – Leva7

相關問題