Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从词典列表中删除具有特定id的词典_Python - Fatal编程技术网

Python 从词典列表中删除具有特定id的词典

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

如上所示,我有一个字典列表。我想删除id为4的词典,而不使用线性搜索。

既然你说它们符合顺序,我就进行二进制搜索

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)