2017-05-21 3 views
1

ein Wörterbuch haben die Form basiert erhalten. Ich möchte alle Kombinationen der Elemente dieser Listen nehmen, hier ['A' , 'B'], ['C', 'B'] und sehen, ob sie in meinem ursprünglichen Wörterbuch sind und wenn ja, geben Sie die Schlüssel zurück, wo sie gefunden wurden.Mit Liste Verständnis der Schlüssel aus einem Wörterbuch auf Werte zurückgibt leere Listen

ich die beiden Funktion unten geschaffen, um zu tun haben, so

def func1(r1, r2): 
    return [[func2([outer, inner]) for inner in r2] for outer in r1] 


def func2(r): 
    return [key for key, val in my_dictionary.items() if r in val] 

so sie als func1(list1, list2) ich nennen könnte, und ich würde hier erwarten D zurück zu bekommen, da es die Liste ['A', 'B'] enthält, was bekomme ich zurück sind jedoch leere Listen.

Was habe ich in den oben genannten Funktionen vermasselt?

+0

Haben Sie versucht, durch Ihre Schleifen zu gehen, um zu sehen, ob sie tun, was Sie erwarten? –

+1

Nicht sicher, warum Sie den Downvote bekommen haben. Du hast klar darüber nachgedacht. –

+0

Ich habe den exakt gleichen Code für einen vorherigen Fall verwendet, wo ich nur mit einzelnen Werten und Listen, nicht Listen und Listen zu tun hatte, den 'if' Teil komplett vergessen habe, danke für die Hilfe. – ealiaj

Antwort

1

Ihr Problem ist die Aussage ... if r in val. Es sollte wahrscheinlich ... if r == val sein. In Ihrem Fall wird der Wert val etwas wie ['A', 'B'] sein, und auch r, manchmal.

in prüft, ob ein Element von valr ist, was natürlich nie wahr sein wird. == vergleicht alle Elemente in den zwei Listen, was Sie wollen.

Verwandte Themen