У меня есть вопрос, похожий на тот, который я спросил на прошлой неделе: "Sorting dict items by key, beyond alphanumeric sorting"Сортировки Dict элементы целочисленного ключом, специальная функция
Проблема заключается в тождественной, но теперь ключи от моей Словаре просто целые числа:
>>>lis_nodiz = list(nodiz.items()) #list of dict items as tuples
[(2, 316),
(3, 66),
(4, 37),
(5, 15),
(6, 10),
(7, 4),
(8, 3),
(9, 1),
(10, 2),
(11, 1),
(12, 1),
(45, 1),
(109, 1),
(16, 1),
(126, 1)]
Как бы догадку я ищу для этого упорядоченного списка кортежей:
[(2, 316),
(3, 66),
(4, 37),
(5, 15),
(6, 10),
(7, 4),
(8, 3),
(9, 1),
(10, 2),
(11, 1),
(12, 1),
(16, 1),
(45, 1),
(109, 1),
(126, 1)]
Я попытался повторно использовать «key_func» Padraic Cunn Инги предложила мне, к сожалению, эта функцию, кажется, работает только с ключами Dict типа строки:
def key_func(x):
"""'a0p12' -> (0, 12)"""
return tuple(int("".join(v)) for k,v in groupby(x[0], key=str.isdigit) if k)
>>>lis_nodiz_od = sorted(nodiz.items(), key=key_func)
TypeError: expected string or buffer
Как изменить функцию, или как я могу сделать по-другому, чтобы получить свою цель? Я был бы очень признателен, если кто-нибудь объяснит, как работает «key_func», и правильные изменения, чтобы сделать его работу с целыми; таким образом, я буду больше понимать о программировании на Python, надеюсь, и не только решить мою проблему сегодня! Спасибо вам всем!
В защиту для оставать этого вопроса, я знаю, что этот вопрос был задан до; в любом случае мне кажется, что часть вопроса о key_func оригинальна и не задана раньше. Так что в окончательном вопросе мой вопрос не был полностью задан и ответил раньше ... до вас! –