2016-12-08 2 views
0

Element3 jeder Liste ist eine Liste (in Klammern). Ich möchte, dass Element3 eine Zeichenfolge 'store1.txt' nicht ['store1.txt'] ist.Python-Liste zu String

store_list = [["Freds", "store1"], ["Sams", "store2"], ["Johns", "store3"], ["Toms", "store4"]] 
urls_list = ['store1.txt', 'store2.txt', 'store3.txt', 'store4.txt', 'store5.txt', 'store6.txt'] 
ls = [] 
for x in store_list: 
    str_num = x[1] 
    matching = [s for s in urls_list if str_num in s] 
    x.insert(3, matching) 
    ls.append(x) 
for i in ls: 
    print i 
+0

Beide ettanany und Rassar die Antworten auf meinem Beispiel arbeiten, aber sie arbeiten nicht für meine eigentliche Skript. Wenn Sie die [0] am Ende der übereinstimmenden Zeile hinzufügen, bekomme ich einen IndexError: list Index außerhalb des Bereichs. Beim Hinzufügen der .pop() bekomme ich und IndexError: pop aus der leeren Liste. Seufz, aber wenn ich den Code ohne eine der beiden ausführe, tut er es wie es sollte und gibt eine Liste in diesem Element zurück. – precastnick

+0

Ich verstehe jetzt. Einige der Listen sind leer, weil sie nicht ordnungsgemäß erstellt wurden. Daher kann eine leere Liste nicht geöffnet werden. Nochmals vielen Dank für die Großartigkeit. – precastnick

Antwort

1

Ändern der 6. Zeile:

matching = [s for s in urls_list if str_num in s][0] 

Die Liste Verständnis erzeugt automatisch eine Liste, so dass Sie den ersten Wert dieser Liste nehmen müssen, wenn Sie nur die Zeichenfolge wollen.

+0

Wundervoller Rassar. Vielen Dank. – precastnick

0

matching ist eine Liste, Sie pop() verwenden können Ihr Element wie folgt zu erhalten:

x.insert(3, matching.pop()) 
+0

Danke ettanany. Das hat auch funktioniert. – precastnick