2017-08-25 2 views
-2

Ich habe die folgende Ausgabe von zwei Listen mit Ausgängen, die sie wie sehen unterIterieren eine Python-Liste mit Nichtzahlenwert als Index

stats = [['cap', '0'], ['cap', '0']] 


stats1 = [['cap', '0'], ['cap', '1']] 



for key in stats: 
    if stats[key]['cap'][0] < stats1[key]['cap'][0]: 
    print (success) 

Was mache ich falsch?,
ich je Schlüssel iterieren versucht und vergleichen Sie die Werte aus jeder Liste, um zu sehen, ob ein Wert größer als 0 ist

+0

Sie können einen 'dict' in Python-Dokumentation nachschlagen. – wmorrell

+1

Sie können nicht einfach eine Python-Liste mit nicht numerischen Wert als Index iterieren. Sieht so aus, als müssten Sie stattdessen die numerischen Werte verwenden: 'int (stats [key] [1])' – Julien

+0

Was möchten Sie tun? –

Antwort

2

Ich bin mir nicht sicher, was Sie versuchen zu tun, aber wenn Sie Werte von List Stats1 mit List Stats vergleichen möchten ist eine Möglichkeit, sie zu machen Liste von Tupeln und iterieren wie folgt:

stats = [('cap', '0'), ('cap', '1')] 

stats1 = [('cap', '0'), ('cap', '1')] 

for index in range(0,len(stats)): 
    if stats[index][1] < stats1[index][1]: 
     print('sucess') 
+0

Danke !! Ich bin mir nicht sicher, ob Statistiken zu mir kommen als stats = [('cap', '0'), ('cap', '1')] wie du gesagt hast oder [['cap', '0'], [' cap ',' 0 ']]. Wird Ihre Lösung im zweiten Format funktionieren? – Zuckerberg

+0

Wenn ein Wert in Klammern [] steht, ist er ein Listenelement. Die Sache, die ich in Klammern() geschrieben habe, ist ein Tupel, das eine andere Datenstruktur hat https://www.tutorialspoint.com/python/python_tuples.htm. Das Format, das Sie schreiben, ist eine Liste von Listen und ich schlug eine Liste von Tupeln vor, die intuitiver ist. Es kann als Liste von Listen arbeiten, aber es wird mehr Mesy. –

1

Ein anderer Ansatz mehr pythonic wird mit dem Befehl zip:

stats = [['cap', '0'], ['cap', '0']] 
stats1 = [['cap', '0'], ['cap', '1']] 
for s1, s2 in zip(stats, stats1): 
    if s1[1] < s2[1]: 
     print success 
+0

Diese Lösung gibt mir einen KeyError: 1 – Zuckerberg

Verwandte Themen