5 Stimmen

Wie kann ich den höchsten Wert in einer alphanumerischen Liste mit Python abrufen?

Wenn ich eine Liste von Zeichenfolgen wie ["A", "B", "1", "0", "C", "2"] habe, wie kann Python elegant den "höchsten" Wert (2) dieser Liste abrufen?

Zum Beispiel, wenn die obige Liste von niedrig nach hoch sortiert würde, würde sie sein

[A, B, C, 0, 1, 2]

und ich müsste 2 abrufen.

Verwendung von sorted() organisiert die Liste auf folgende Weise

[0, 1, 2, A, B, C]

7voto

Kevin Punkte 72013

Sie könnten einen benutzerdefinierten Schlüssel für sorted angeben, der dazu führt, dass Nicht-Ziffernzeichen vor Ziffern angezeigt werden:

>>> x = ["A", "B", "1", "0", "C", "2"]
>>> sorted(x, key = lambda item: (item.isdigit(), item))
['A', 'B', 'C', '0', '1', '2']
>>> max(x, key = lambda item: (item.isdigit(), item))
'2'

Eine allgemeinere Lösung könnte sein, explizit anzugeben, welche Art von Sortierung Sie möchten. So können Sie die Implementierung einfach ändern, wenn Sie Ihre Meinung darüber ändern, was "höchstes" ist.

>>> ordering = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
>>> x = ["A", "B", "1", "0", "C", "2"]
>>> print max(x, key=ordering.index)
2

>>> #Tatsächlich habe ich beschlossen, dass A am höchsten sein sollte!
>>> ordering = "BCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A"
>>> print max(x, key=ordering.index)
A

Dies kann etwas langsamer sein als die erste Lösung, da index in linearer Zeit ausgeführt wird. Sie könnten jedoch den Kompromiss als sinnvoll erachten, wenn Sie finden, dass er den Code verständlicher macht.

0voto

Cory Kramer Punkte 114981
my_list = ["A", "B", "1", "0", "C", "2"]
my_list.sort()
print(my_list[-1])

However, this will print "C". Buchstaben sind im ASCII "größer als" Zahlen

Möchtest du Zahlen als 'größer als' Buchstaben betrachten?

0voto

C.B. Punkte 8136
a = ["A", "B", "1", "0", "C", "2"]
max([x for x in a if x.isdigit()])

0voto

kylieCatt Punkte 9924

Dieses iteriert über die Liste und setzt den Wert von max auf den Wert von jedem, wenn jeder eine Zahl ist und größer als der aktuelle Wert von max ist:

max = 0
for item in lst:
    if not item.isalpha():
        if int(item) > max:
            max = int(item)
        else:
            pass

print(max)

0voto

Daniel Punkte 695

Wenn Ihr Ziel darin besteht, die größte Zahl unter den Elementen Ihrer Liste zu erhalten, könnten Sie versuchen, die Zahlen in Ganzzahlen umzuwandeln und dann das Maximum zu finden.

def casted_max(l):
    casted = [int(m) for m in l if m.isdigit()]
    if casted:
        return max(casted)
    else:
        return -1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X