Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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-如果字典键等于某个值,则从列表中删除字典_Python_Python 3.x - Fatal编程技术网

python-如果字典键等于某个值,则从列表中删除字典

python-如果字典键等于某个值,则从列表中删除字典,python,python-3.x,Python,Python 3.x,我想知道,如果用户状态等于“脱机”,订单类型等于“购买”,如何从列表中删除特定的dict(使用for循环对其进行迭代,并在迭代时修改列表,因为列表指针会产生异常) 您可以重新创建列表,而不使用不需要的元素: mylist = [key_values for key_values in mylist if key_values['user']['status'] != 'offline'] (*)不要使用保留关键字命名变量 seq = [ { "user"

我想知道,如果用户状态等于“脱机”,订单类型等于“购买”,如何从列表中删除特定的dict(使用for循环对其进行迭代,并在迭代时修改列表,因为列表指针会产生异常)


您可以重新创建列表,而不使用不需要的元素:

mylist = [key_values for key_values in mylist if key_values['user']['status'] != 'offline']
(*)不要使用保留关键字命名变量

seq = [
         {
           "user": {"status": "offline"}, 
           "order_type": "buy"
         },
         {  "user": {"status": "online"},
            "order_type": "sell"
         }
       ]

for _ in seq:
    print _
    if _['user']['status'] == 'offline':
        seq.remove(_)

print seq
如果你想就地移除

输出:
[{'user':{'status':'online'},'order_type':'sell'}]

产生一个异常,keyrerror:'status'和“list”变量名只是一个示例哇,有嵌套的dicts。修好了。不管什么借口,都不要隐藏关键字。这不起作用,因为它是一个很大的列表,并且由于指针的原因,在迭代时无法修改
seq = [
         {
           "user": {"status": "offline"}, 
           "order_type": "buy"
         },
         {  "user": {"status": "online"},
            "order_type": "sell"
         }
       ]

for _ in seq:
    print _
    if _['user']['status'] == 'offline':
        seq.remove(_)

print seq