Ich schreibe eine Funktion, wo ich ein Wörterbuch durchsuchen muss und die Schlüssel und einen Teil der Werte zurückgeben muss, die das früheste Jahr enthalten und wenn es mehr als eine Rückkehr gibt sie als eine Liste von Tupeln.Wert mit dem frühesten Jahr in einem Wörterbuch finden
Beispiel Wörterbuch:
{
'V':[("Self-Portrait",1500,20.0,30.0,"oil paint","Italy")],
'B':[("Self-Portrait",1500,20.0,20.0,"oil paint","Italy")],
'K':[("Self-Portrait-1",1500,10.0,20.0,"oil paint","Netherlands"),("Self-Portrait-2",1510,10.0,20.0,"oil paint","Netherlands"),("Self-Portrait-3",1505,10.0,20.0,"oil paint","USA")],
'M':[("Self-Portrait-1",1800,20.0,15.0,"oil paint","USA"),("Self-Portrait-2",1801,10.0,30.0,"oil paint","France")]
}
Aus diesem Wörterbuch, wenn meine Funktion für das früheste Jahr war auf der Suche (n) wäre es
earliest_year(dictionary1())
[('B', 'Self-Portrait'), ('K', 'SelfPortrait-1'),
('V', 'Self-Portrait')]
Drei der Jahre zurückkehren „1500“ waren die gleichen (und die früheste), also gab es eine Liste dieser drei Schlüssel zurück, die das erste Element des Wertes waren und den mit "1800" ignorierten. Ich habe angefangen, an Code für dieses zu arbeiten, aber ich bin nicht sicher, wie man nach dem frühesten Jahr sucht und den Fehler "unerwartetes EOF" erhält, da ich die Funktion nicht befrage, um überhaupt etwas zu tun. Jede Hilfe würde geschätzt werden
def earliest_year(dictionary):
matches = []
if not dictionary:
return None
for key in dictionary:
for record in dictionary[key]:
Warum nah? Sie können eine 'for' -Schleife nicht so ausweiden, Sie könnten ihr zumindest einen' pass' geben –