2017-08-03 65 views
0

下面列表的元素是我的清單:相關檢索到其他元素

List1 = [['movies', 0.0], ['minion 2015', 1.0], ['minion 2016', 0.3333333333333333]] 

我想恢復相關的值「1.0」誰是「馬仔2015」的元素。有可能做到這一點?


一些細節:

我的例子是由於價值,我從我的劇本得到了回報。 此結果首先顯示列表'list1'。 然後用條件處理此列表返回結果條目[1.0]。 我想知道我們是否可以檢索與此元素(1.0)關聯的元素,它是輸出中的"minion 2015"

+1

如何意味着恢復?它從未失去。 –

+0

恢復是什麼意思? – ettanany

+0

它確定這個值是唯一的嗎? –

回答

0

如果你的意思是你想檢索它,這裏有一個選項。

In [1194]: def get_key(l, key): 
     ...:  for k, v in l: 
     ...:   if k == key: 
     ...:    yield v 
     ...:    

In [1195]: list(get_key(List1, 'minion 2015')) 
Out[1195]: [1.0] 

定義函數get_key以產生與此關鍵字相關聯的所有值。


如果你在python3.3或更高,可以使用yield from語法來縮短你的函數:

In [1198]: def get_key(l, key): 
     ...:  yield from (v for k, v in l if k == key) 
     ...:    

In [1199]: list(get_key(List1, 'minion 2015')) 
Out[1199]: [1.0] 
+0

如果每個子列表的第二個元素不是唯一的,該怎麼辦? (你用它作爲字典中的關鍵字)。 – ettanany

+0

是的,他用浮動索引。也許,有必要轉換元素的類型。例如像一個字符串? – Taylor08

+0

@ Taylor08固定。現在看看。 –

0

是它可以做到的。

我會建議你閱讀這個reference

+0

非常豐富!謝謝。 –

+0

Allrigth,謝謝人們 – Taylor08

0

您可以使用filter象下面這樣:

filtered_list = list(filter(lambda i: i[1] == 1.0, my_list)) 

輸出:

>>> my_list = [['movies', 0.0], ['minion 2015', 1.0], ['minion 2016', 0.3333333333333333]] 
>>> filtered_list = list(filter(lambda i: i[1] == 1.0, my_list)) 
>>> filtered_list 
[['minion 2015', 1.0]] 
>>> filtered_list[0][0] 
'minion 2015' 
+0

Allrigth,謝謝大家 – Taylor08