Es scheint, dass Sie völlig Ihre Frage geändert, nachdem die Menschen die erste Version beantwortet. Bitte tu das nicht. Sie könnten einfach eine neue Frage stellen.
Wenn Sie eine heterogene Liste sortieren möchten, können Sie eine benutzerdefinierte key angeben, die ein Tupel zurückgibt. Das erste Element ist 0
für Strings und 1
für Ganzzahlen. Auf diese Weise würden die Zeichenfolgen vor den Ganzzahlen angezeigt. Wenn das Objekt eine ganze Zahl ist, wird das zweite Element -x
eingestellt, um die ganzen Zahlen in abnehmender Reihenfolge zu sortieren:
def custom_order(x):
if isinstance(x, int):
return (1, -x)
else:
return (0, x)
print(sorted([1,2,3,4,5,"a","b","c","d"], key=custom_order))
# ['a', 'b', 'c', 'd', 5, 4, 3, 2, 1]
Dieser Code soll auf Python2 und Python3 arbeiten. Es wird auf Python3 fehlschlagen, wenn ein Element weder ein String noch ein Int ist.
Original Frage: convert verschachtelt Strings Ints
Sie ein nested list comprehension mit einem ternary operator verwenden könnten zu überprüfen, ob die Zeichenfolge looks like an integer:
>>> data = [["a","1"],["b","2"]]
>>> [[int(s) if s.isdecimal() else s for s in l] for l in data]
[['a', 1], ['b', 2]]
Als Bonus es in beliebiger Reihenfolge funktionieren würde und mit Unterlisten jeder Größe:
>>> data = [["a","1"],["b","2"],["3", "c"], ["4", "5", "d"]]
>>> [[int(s) if s.isdecimal() else s for s in l] for l in data]
[['a', 1], ['b', 2], [3, 'c'], [4, 5, 'd']]
was ist Ihre Eingabe und was ausgegeben wird? –
'output_list = map (lambda x: [x [0], int (x [1])], eingabe_liste)' –
'output = [[x [0], int (x [1])] für x in der Liste ] ' – bgse