Je ne parlerai pas de la différence entre list.sort () et sorted (). Il semble que vous puissiez écrire ainsi sur la spécification de la clé à trier. 2.7, peut-être 3 et plus tard.
python2.7
from pprint import pprint
items = [
{'id':2, 'book': {'type':'zassi', 'name': u'bbb' }},
{'id':3, 'book': {'type':'manga', 'name': u'ccc' }},
{'id':4, 'book': {'type':'zassi', 'name': u'ddd' }},
{'id':1, 'book': {'type':'manga', 'name': u'aaa' }},
{'id':5, 'book': {'type':'manga', 'name': u'eee' }},
]
#Une clé de tri
sorted_items = sorted(
items,
key = lambda x: x['id']
)
pprint(sorted_items)
#=>
#[{'book': {'name': u'aaa', 'type': 'manga'}, 'id': 1},
# {'book': {'name': u'bbb', 'type': 'zassi'}, 'id': 2},
# {'book': {'name': u'ccc', 'type': 'manga'}, 'id': 3},
# {'book': {'name': u'ddd', 'type': 'zassi'}, 'id': 4},
# {'book': {'name': u'eee', 'type': 'manga'}, 'id': 5}]
#Deux clés de tri ou plus
sorted_items = sorted(
items,
key = lambda x: (x['book']['type'], x['id'])
)
pprint(sorted_items)
#=>
#[{'book': {'name': u'aaa', 'type': 'manga'}, 'id': 1},
# {'book': {'name': u'ccc', 'type': 'manga'}, 'id': 3},
# {'book': {'name': u'eee', 'type': 'manga'}, 'id': 5},
# {'book': {'name': u'bbb', 'type': 'zassi'}, 'id': 2},
# {'book': {'name': u'ddd', 'type': 'zassi'}, 'id': 4}]
J'ai écrit plus tard et j'ai remarqué que le getter d'élément et le getter attr semblent ne regarder que la même hiérarchie, donc par exemple, [{book: {}, étagère: {}}, {livre: {}, étagère: {} }] Avec une structure comme
, j'ai l'impression qu'il n'est pas possible de spécifier des clés comme celle-ci pour le livre et celle-ci pour l'étagère. </ del> -> Vous pouvez les spécifier avec une touche sans les utiliser.
Recommended Posts