Python按键删除列表中的字典

Kyl*_*aro 2 python dictionary list python-3.x

考虑以下代码:

some_list = [
    {'id' : '3459', 'name' : 'Alice'},
    {'id' : '1112', 'name': 'Bob'}
]
person_id = '3459'
# Search person id in list of dictionaries and return {'id' : '3459', 'name' : 'Alice'}
Run Code Online (Sandbox Code Playgroud)

知道了person_id,是有可能搜索这个some_list'id'抢整部字典?目前,我正在使用for循环执行此操作,但我想知道是否还有其他实现。感谢所有答复。

Roa*_*ner 5

您可以将结构转换为嵌套字典,其键为id。然后,您将保持常量O(1)查找,而不是以线性O(N)时间扫描列表。

例:

data = {
    '3459': {
        'name' : 'Alice'
    },
    '1112': {
        'name': 'Bob'
    }
}

person_id = '3459'

print(data[person_id])
# {'name': 'Alice'}
Run Code Online (Sandbox Code Playgroud)

您也可以将其name作为值而不是字典:

data = {
    '3459': 'Alice',
    '1112': 'Bob'
}

person_id = '3459'

print(data[person_id])
# Alice
Run Code Online (Sandbox Code Playgroud)

注意:这假定没有重复的ID,如评论中提到的@Chris_Rands