Ich bin mir nicht ganz sicher, ob ich Ihre Logik klar verstanden habe, um das Alter mit der maximalen Überlebensrate zu bestimmen. Unter der Annahme, dass das Alter, das die höchste Zahl von 1s hat, die höchste Überlebensrate hat, wird der folgende Code geschrieben:
Ich habe den Leseteil ein wenig anders gemacht, da der Datensatz drahtgebunden wirkte, wenn ich csv verwendete. Wenn das csv-Modul in Ihrer Umgebung gut funktioniert, verwenden Sie es. Die Idee ist, jedes Wertelement in jeder Zeile abzurufen; wir sind an der 0. und 3. Spalte interessiert.
Im folgenden Code, halten wir ein Wörterbuch, survival_map, und zählen die Häufigkeit eines bestimmten Alters mit einem
import operator
survival_map = {}
with open('Dataset.csv', 'rb') as in_f:
for row in in_f:
row = row.rstrip() #to remove the end line character
items = row.split(',') #I converted the tab space to a comma, had a problem otherwise
age = int(items[0])
survival_rate = int(items[3])
if survival_rate == 1:
if age in survival_map:
survival_map[age] += 1
else:
survival_map[age] = 1
1. zugeordnet sind Sobald wir die Wörterbuch aufzubauen, {33: 2, 34: 5, 35: 2, 30: 3, 31: 2}, sie in umgekehrter Richtung durch den Schlüssel sortiert wird:
sorted_survival_map = sorted(survival_map.items(), key=operator.itemgetter(1), reverse = True)
max_survival = sorted_survival_map[0]
UPDATE:
Für einen einzigen Maximalwert, OP Vorschlag (in einem Kommentar) Ist bevorzugt. Posting hier:
maximum = max(dict, key=dict.get)
print(maximum, dict[maximum])
Für mehr Max-Wert
max_keys = []
max_value = 0
for k,v in survival_map.items():
if v > max_value:
max_keys = [k]
max_value = v
elif v == max_value:
max_keys.append(k)
print [(x, max_value) for x in max_keys]
Natürlich ist dies durch ein Wörterbuch Verständnis erreicht werden könnte; Aus Gründen der Lesbarkeit schlage ich dies jedoch vor. Dies geschieht auch durch einen Durchgang durch die Objekte im Wörterbuch, ohne es mehrmals zu durchlaufen. Daher hat die Lösung eine O (n) -Komplexität und wäre am schnellsten.
Es sieht so aus, als ob Sie möchten, dass wir einen Code für Sie schreiben. Während viele Benutzer bereit sind, Code für einen in Not geratenen Coder zu produzieren, helfen sie normalerweise nur, wenn das Poster bereits versucht hat, das Problem selbst zu lösen. Eine gute Möglichkeit, diesen Aufwand zu demonstrieren, besteht darin, den Code, den Sie bisher geschrieben haben, die Beispieleingabe (falls vorhanden), die erwartete Ausgabe und die Ausgabe, die Sie tatsächlich erhalten (Konsolenausgabe, Trace-Backs usw.), einzubeziehen. Je mehr Details Sie angeben, desto mehr Antworten erhalten Sie wahrscheinlich. Überprüfen Sie die [FAQ] und [fragen]. –
Erforschen Sie CSV-Scraping mit Python, schreiben Sie etwas Code und kommen Sie zurück, wenn Sie Probleme haben. –
Danke Łukasz Rogalski und jacob-on-stackoverflow – StevieG