Python 从词典列表中删除具有特定id的词典
如上所示,我有一个字典列表。我想删除id为4的词典,而不使用线性搜索。既然你说它们符合顺序,我就进行二进制搜索Python 从词典列表中删除具有特定id的词典,python,Python,如上所示,我有一个字典列表。我想删除id为4的词典,而不使用线性搜索。既然你说它们符合顺序,我就进行二进制搜索 data_list = [ {"id": 1,}, {"id": 2,}, {"id": 3,}, {"id": 4,}, {"id": 5,}, {"id": 6,}, ] def b搜索(数据列表,x): lo,h
data_list = [
{"id": 1,},
{"id": 2,},
{"id": 3,},
{"id": 4,},
{"id": 5,},
{"id": 6,},
]
def b搜索(数据列表,x):
lo,hi=0,len(数据列表)-1
而液氧:
hi=mid-1
elif数据列表[mid][“id”]很酷。你试过什么?请发布您的代码。元素是否保证有序?否则,除非遍历项目并查看每个项目的id,否则无法找到具有特定id的元素。你排除了吗?你不能创建一个id为键的字典吗?然后使用.pop(键)?@khelwood。是的,元素保证是有序的。然后你可以使用一个。
def bsearch(data_list,x):
lo,hi=0,len(data_list)-1
while lo<=hi:
mid=(lo+hi)//2
if data_list[mid]["id"]==x:
return mid
if data_list[mid]["id"]>x:
hi=mid-1
elif data_list[mid]["id"]<x:
lo=mid+1
return -1
data_list = [
{"id": 1,},
{"id": 2,},
{"id": 3,},
{"id": 4,},
{"id": 5,},
{"id": 6,},
]
idx=bsearch(data_list,4)
if idx:
data_list.pop(idx)
else:
print("value not found")
print(data_list)