2017-08-03 1 views
0

Hier ist meine Liste:ein Element einer Liste abrufen zu einem anderen Element zugeordnet

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

Ich mag würde das Element auf den Wert „1,0“ in Verbindung erholen, die „Günstling 2015“ ist. Es ist möglich, das zu tun?


Einige Details:

Mein Beispiel ist auf eine Rückkehr von einem Wert ich von meinem Skript bekam. Dieses Ergebnis zeigt mir zuerst eine Liste wie die Liste 'list1'. Dann gibt eine Verarbeitung dieser Liste mit einer Bedingung das Ergebniselement [1.0] zurück. Und ich würde gerne wissen, ob wir das Element mit diesem Element (1.0), die "minion 2015" in Ausgabe ist, abrufen können.

+1

Wie erholen Sie das? Es wurde nie verloren. –

+0

Was meinst du mit erholen? – ettanany

+0

ist es sicher, dass der Wert einzigartig ist? –

Antwort

0

Wenn Sie wollen, dass Sie abrufen möchten es, hier ist eine Option.

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] 

Definieren einer Funktion get_key alle Werte mit diesem Schlüssel zugeordnet zu ergeben.


Wenn Sie auf python3.3 oder größer sind, können Sie eine yield from Syntax verwenden, um Ihre Funktion zu verkürzen:

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

Was ist, wenn das zweite Element jeder Unterliste nicht eindeutig ist? (Sie verwenden es als Schlüssel in Ihrem Wörterbuch). – ettanany

+0

Ja, er indexiert mit Float. Vielleicht ist es notwendig, den Typ des Elements zu konvertieren. Wie eine Schnur zum Beispiel? – Taylor08

+0

@ Taylor08 Fest. Sieh es dir jetzt an. –

0

Ja, es kann getan werden.

Ich würde Ihnen empfehlen, dies zu lesen reference.

+0

Sehr informativ! Vielen Dank. –

+0

Allrigth, danke Leute – Taylor08

0

können Sie filter wie unten verwenden:

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

Ausgang:

>>> 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, danke Leute – Taylor08

Verwandte Themen