Ну, этот вопрос выглядит так, как будто вы застряли на вводном курсе по программированию. Итак, у вас уже есть код критерия сортировки (хорошо сделано), давайте распакуем его в функцию:
>>> def capcount(s):
... capitals = 0
... for i in s:
... if i.isupper():
... capitals+=1
... return capitals
# but in python this can be translated to:
lambda s: sum(1 for c in s if c.isupper())
Теперь вы можете использовать эту функцию в качестве ключевого параметра встроенного sorted
:
strings = ["abc", "a", "AA", "DAabcas", "EFSFDAAAaaa", "adesAA"]
sorted(strings, key = lambda s: sum(1 for c in s if c.isupper()))
==> ["abc", "a", "AA", "DAabcas", "adesAA", "EFSFDAAAaaa"]
Так что это упорядочено в обратном порядке, теперь вы можете сделать одну из двух вещей (возможно, больше):
# Invert what you have now
min_to_max = sorted(strings, key = lambda s: sum(1 for c in s if c.isupper()))
max_to_min = min_to_max[::-1]
# Or change the sorting function around
# lambda s: sum(-1 for c in s if c.isupper())
max_to_min = sorted(strings, key = lambda s: sum(-1 for c in s if c.isupper()))