我正在寻找在 python 中创建列表的最佳方法,该列表为放入列表中的对象的所有属性创建散列索引(dicts)。
>>> foo = IndexingList([{ 'id': 1, 'name': 'cat' }, { 'id': 2, 'name': 'dog' }])
>>> foo[0]
{'id': 1, 'name': 'cat'}
>>> foo.findall('id', 2)
[{'id': 2, 'name': 'dog'}]
>>> foo += {'id': 3, 'name': 'dog'}
>>> foo.findall('name', 'dog')
[{'id': 2, 'name': 'dog'}, {'id': 3, 'name': 'dog'}]
我想 IndexingList 的数据结构将如下所示:
{
'items': [
{ 'id': 1, 'name': 'cat' },
{ 'id': 2, 'name': 'dog' }
],
'indexes': {
'id': {
1: [{ 'id': 1, 'name': 'cat' }],
2: [{ 'id': 2, 'name': 'dog' }]
},
'name': {
'cat': [{ 'id': 1, 'name': 'cat' }],
'dog': [
{ 'id': 2, 'name': 'dog' },
{ 'id': 3, 'name': 'dog' }
]
}
}
}
其中“索引”节点中的对象指的是“项目”中的相同对象。
我认为本身是对象的属性值可以通过使用 str(property) 来获得唯一的索引键来获得一些东西来粘贴在“索引”中。