2017-10-05 5 views
0

ich neu zu Python und ich schaffst das nicht zu erreichen.Finden Sie den Schlüssel der Liste der Listen nach Wert

Ich habe zwei Listen von Listen:

list1 = [['user1', 'id1'], ['user2', 'id2'], ['user3', 'id3']...] 
list2 = [['id1', 'group1'], ['id1', 'group2'], ['id2', 'group1'], ['id2', 'group4']...] 

Und was ich brauche, ist eine einzige Liste wie folgt aus:

[['user1','id1','group1'],['user1','id1','group2'],['user2','id2','group1']] 

Ich glaube, ich alle Listen durchlaufen konnte und Werte vergleichen, aber ich denke, Es muss eine eingebaute Funktion geben, die es mir ermöglicht, einen Wert in einer Liste von Listen zu speichern und den Schlüssel oder etwas Ähnliches zurückzugeben. Aber ich kann nichts für mehrdimensionale Listen finden.

Beachten Sie, dass der IDN-Wert in der ersten Liste im zweiten nicht unbedingt vorhanden ist.

Danke für Ihre Hilfe!

+1

ist es möglich, Wörterbücher statt Listen zu verwenden? – farbiondriven

+0

eine Liste kommt von einer Ruheanforderung und die andere von einer LDAP-Suche, wobei ich sie erzeuge, wobei jede Unterliste an die Hauptliste angehängt wird. Ich denke, dass ich stattdessen ein Wörterbuch machen könnte, aber ich weiß nicht wie. – Emepese

+0

Listen haben keine "Schlüssel", daher gibt es keine solche eingebaute Funktion. Sie sollten ein 'dict' verwenden, wenn Sie Schlüssel/Wert-Paare zuordnen möchten. –

Antwort

2

In Python gibt es so etwas nicht. Es gibt Methoden für mehrdimensionale Arrays in numpy, aber sie sind nicht wirklich für Text geeignet.

Ihre zweite Liste Funktionen als Wörterbuch, machen so ein

dict2 = {key:value for key, value in list2} 

und dann

new_list = [[a, b, dict2[b]] for a, b in list1] 
0

Wenn Sie eine Liste von Listen verwenden müssen, können Sie ein Verständnis dieses Ziel zu erreichen nutzen können.

list1 = [['user1', 'id1'], ['user2', 'id2']] 
list2 = [['id1', 'group1'], ['id1', 'group2'], ['id2', 'group1'], ['id2', 'group4']] 

listOut = [[x[0],x[1],y[1]] for x in list1 for y in list2 if x[1] == y[0]] 

output => [['user1', 'id1', 'group1'], ['user1', 'id1', 'group2'], ['user2', 'id2', 'group1'], ['user2', 'id2', 'group4']] 
0

Sie können diesen Code versuchen:

list1 = [['user1', 'id1'], ['user2', 'id2'], ['user3', 'id3']] 
list2 = [['id1', 'group1'], ['id1', 'group2'], ['id2', 'group1'], ['id2', 'group4']] 

final_list=[] 
for sublist in list1: 
    for item in sublist: 
     for sublist1 in list2: 
      for item1 in sublist1: 
       if item==item1: 


        final_list.append(("".join(sublist[:1]),item1,"".join(sublist1[1:]))) 

print(final_list) 

Ausgang:

[('user1', 'id1', 'group1'), ('user1', 'id1', 'group2'), ('user2', 'id2', 'group1'), ('user2', 'id2', 'group4')] 
Verwandte Themen