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