Вы можете указать ключ сортировки и использовать сортировку для кортежей:
[(1,1),(1,2)]
: кортежи сортируются по 1-му элементу при равенстве от 2-го до n-го:
unsorted = 'ABaB'
s = sorted(unsorted, key= lambda x:(x.lower(),x))
print(''.join(s)) # 'AaBB'
Это гарантирует, что сначала он будет отсортирован по «нижнему» символу - группировка a
и A
вместе, а затем по фактическому символу впоследствии, чтобы они также сортировались: ABaaAAaAaAAAB => AAAAAAAaaaaBB
Показания:
Простойkey = str.lower
, как указано в заявленном обмане, не группирует A
до A
и a
до a
, что было бы неплохо иметь для квадратов Пруннета
Если вы хотите, чтобы они оставались в порядке вхождения, а затем группировались в верхнем и нижнем регистре, вы можете использовать:
unsorted = 'ABaaAAaAaAAAB'
s = sorted(unsorted, key=str.lower) # not by tuple, just by lower
print(''.join(s))
, в результате чего элементы сохраняются в «порядке»:
AaaAAaAaAAABB # instead of AAAAAAAaaaaBB
и описывается в сортировке списка без учета регистра, без нижнего регистра результата?