1
我有一個已經按鍵id
排序的字典列表。Python:插入新元素到排序的字典列表中
y = [{'id': 0, 'name': 'Frank'},
{'id': 5, 'name': 'Hank'},
{'id': 8, 'name': 'Fred'},
{'id': 30, 'name': 'Jill'}]
我想插入一個新元素到列表中。
y.append({'id': 6, 'name': 'Jenkins'})
如何避免在添加新元素後按如下方式重新排序列表?
y = sorted(y, key=lambda x: x['id'])
理想的結果是:
y = [{'id': 0, 'name': 'Frank'},
{'id': 5, 'name': 'Hank'},
{'id': 6, 'name': 'Jenkins'},
{'id': 8, 'name': 'Fred'},
{'id': 30, 'name': 'Jill'}]
編輯:
使用bisect.insort(y, {'id': 6, 'name': 'Jenkins'})
將工作只爲第一項中,如果字典是按名稱排序,它將會失敗。
幫你一個忙,並創建一個id和name屬性的類。然後,您可以通過\ _ \ _ cmp \ _ \ _方法提供適當的排序方法。 – guidot
編輯完問題後,會添加一個全新的需求,對列表進行排序的字段是可變的。這更像是一個數據庫問題... – guidot