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循环执行此操作,但我想知道是否还有其他实现。感谢所有答复。
您可以将结构转换为嵌套字典,其键为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