Então Gustavo -
bvom, como o pessoal apontou, se voce tentar fazer isso num dicionário
comum, vai receber um "attribute error" - jṕa que diionários nem tem o
método sort.
Se vocẽ está recebendo os seus dados numa estrutura de mapping, que se
cokmporta como um dicionário e tem também o méotod "sort" é só
providenciar um parâmetro "key" apropriado para a chamada a sort.
Vou demonstrar como seria factivel com um dicionário comum:
>>> ordered_items = [item for item in sorted(dic.items(), key=lambda k: "%010d" % int(k[0]) if k[0].isdigit() else k[0])]>>> print (ordered_items)
[('1', 'xxx'), ('2', 'xxx'), ('11', 'xxx'), ('12', 'xxx'), ('50',
'xxx'), ('estraga_prazeres', 'xxx')]
Então o "key" é uma função que pega a chave do item (k[0]) - se ela
for composta só de digitos, transforma em inteiro, e cria uma string
formatada com 0s prefixados ("11" vira "0000000011", e assim por
diante) - e esse resultado da expressão é o que é usado na ordenação.
Esse resultado não pode ser guardado de volta num dicionário ou a
ordenaão se perde - você ou guarda os items numa lista, ou usa um
collections.ordered_dict e guarda valor por valor lá.
js
-><-
2013/5/20 Gustavo Fonseca <
gusta...@gmail.com>: