>>> x = [1, 1, 1, 2, 2, 2, 1, 1, 3, 3, 4, 3, 5]
>>> from itertools import groupby
>>> x_groups_count = [num for _, group in groupby(x) for num, _ in enumerate(group, 1)]
>>> x_groups_count
[1, 2, 3, 1, 2, 3, 1, 2, 1, 2, 1, 1, 1]
в чем моя ошибка?
>>> d = {'1': 'x', '11': 'x1', '3': 'x2', '101': 'x8'}
# исходный
>>> sorted(d)
['1', '101', '11', '3']
# сортируем по int
>>> sorted(d, key=int)
['1', '3', '11', '101']
а если среди ключей будут буквы, тогда возникнет ошибка при конвертации
>>> d = {'zor': 5, 'ert': 5, 'd': 6, 'a': 8, 'zab': 9, '1': 'x', '11': 'x1', '3': 'x2', '101': 'x8'}
# исходный
>>> sorted(d)
['1', '101', '11', '3', 'a', 'd', 'ert', 'zab', 'zor']
# пишем функцию
>>> def d_sort(i):
return int(i) if i.isdigit() else False, i
# сортируем
>>> sorted(d, key=lambda x: d_sort(x))
['a', 'd', 'ert', 'zab', 'zor', '1', '3', '11', '101']
for k in sorted(d.keys())
явное обращение к ключам .keys()for k in sorted(d)
>>> words = [{'src': 'Ананас', 'dst': 323}, {'src': 'Ёжик', 'dst': 3223}, {'src': 'Яблоко', 'dst': 2343}, {'src': 'Hi', 'dst': 78768}]
>>> eng_rus_upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
>>> res = sorted(words, key=lambda x: eng_rus_upper.index(x['src'][0]))
>>> res
[{'src': 'Hi', 'dst': 78768}, {'src': 'Ананас', 'dst': 323}, {'src': 'Ёжик', 'dst': 3223}, {'src': 'Яблоко', 'dst': 2343}]
>>>
>>> x = [['a', '3', '5', '7'], ['b', '1', '2', '3'], ['д', '1', '2', '3']]
>>> # сортируем по столбцам
>>> x_sort = list(zip(*x))
>>> x_sort
[('a', 'b', 'д'), ('3', '1', '1'), ('5', '2', '2'), ('7', '3', '3')]
>>> # убираем лишний кортеж (с буквами)
>>> x_sort = x_sort[1:]
>>> x_sort
[('3', '1', '1'), ('5', '2', '2'), ('7', '3', '3')]
>>> # переводим строки в числа
>>> x_to_int = [list(map(int, i)) for i in x_sort]
>>> x_to_int
[[3, 1, 1], [5, 2, 2], [7, 3, 3]]
>>> # ищем среднее, округляем до сотых
>>> x_avg_sum = ['{:.2f}'.format(sum(i)/3) for i in x_to_int]
>>> x_avg_sum
['1.67', '3.00', '4.33']