Ich werde den Unterschied zwischen list.sort () und sorted () nicht ansprechen. Es scheint, dass Sie so über die Spezifikation des zu sortierenden Schlüssels schreiben können. 2.7, vielleicht 3 und später.
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' }},
]
#Ein Sortierschlüssel
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}]
#Zwei oder mehr Sortierschlüssel
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}]
Ich schrieb später und bemerkte, dass Item Getter und Attr Getter nur dieselbe Hierarchie zu sehen scheinen, also zum Beispiel [{Buch: {}, Regal: {}}, {Buch: {}, Regal: {} }] Bei einer Struktur wie
ist es meines Erachtens nicht möglich, solche Schlüssel für ein Buch und einen für ein Regal anzugeben. </ del> -> Sie können diese mit einem Taple angeben, ohne sie zu verwenden.
Recommended Posts