2016-05-02 16 views
1

Der Einfachheit halber wollen wir drucken sagen, dass ich eine Liste bin mit wie folgt:Wie einen Eintrag in einer Liste von Listen zuzugreifen und die anderen Einträge in dieser Liste

[['Bob', 'Pizza', 'Male'], ['Sally', 'Tacos', 'Female']] 

Ich möchte den Benutzer fragen, die Person Statistiken, die sie so anzeigen möchten, dass es Bob, Pizza und ausgedruckt werden würde, wenn es aufgerufen wurde. Ich habe versucht, die Index-Methode zu verwenden, aber die Liste der Listen, mit denen ich arbeite, hat weit über 150 Einträge.

Ich habe versucht, wie etwas zu verwenden:

personName = input("Enter the person whose stats you would like to see:) 
personIndex = personList.index(personName) 
personStats = personList[personName][1:3] # first index is the name, index 1 and 2 is favorite food and gender 
print(personStats) 

Aber es funktioniert nicht.

+0

Sie sollten ein dict() verwenden, wo Namen die Schlüssel sind – Schore

Antwort

1

Wenn Sie wirklich verwenden Index möchten, können Sie es wie unten tun:

lst=[['Bob', 'Pizza', 'Male'], ['Sally', 'Tacos', 'Female']] 
personName = input("Enter the person whose stats you would like to see:") 
ind = [i[0] for i in lst].index(personName) 
food, gender = lst[ind][1:] 
Print "{0} is a {1} , a {2} lover".format(personName, gender, food) 
1

Ahsanul Weg nicht sehr effizient ist, weil es das erste Element jeder Liste bekommt, auch wenn der erste übereinstimmt. Mine ist ein Kurzschluss:

index = next(i for i, v in enumerate(personList) if v[0] == personName) 

Wenn es eine Möglichkeit gibt, dass sie nicht existiert, können Sie wie folgt ein Standard haben:

index = next((i for i, v in enumerate(personList) if v[0] == personName)), my_default) 

Wenn Sie den Index wollen nur den Wert erhalten Ändern Sie die erste i in eine v, um den Wert an erster Stelle zu erhalten, so dass Sie sich keine Gedanken über die zusätzliche Verarbeitungszeit machen müssen, um den Wert für diesen Index zu finden.

Verwandte Themen