Chcę zamówić elementy w słowniku przy użyciu różnych funkcji porównawczych. Proszę zobaczyć mój przykładowy kod poniżej. Jest to ostatnia część używająca funkcji cmpRatio z sortowanym(), która nie działa. Nie jestem pewien, co robię źle. Z góry dziękuję za każdy pomysł!posortowana funkcja pytona z zdefiniowanymi przez użytkownika funkcjami cmp
mydict = { 'a1': (1,6),
'a2': (10,2),
'a3': (5,3),
'a4': (1,2),
'a5': (3,9),
'a6': (9,7) }
# sort by first element of the value tuple: WORKS
print sorted(mydict.iteritems(), key=lambda (k,v): v[0])
# sort by second element of the value tuple: WORKS
print sorted(mydict.iteritems(), key=lambda (k,v): v[1])
# THIS is what I can't get working:
def cmpRatio(x,y):
sx = float(x[0])/x[1]
sy = float(y[0])/y[1]
return sx < sy
# sort by sum of the elements in the value tuple: DOES NOT WORK
print sorted(mydict.iteritems(), key=lambda (k,v): v, cmp=cmpRatio)
spróbuj sformatować kod za mało '{}' pudełko na edytorze –