2017-08-03 92 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