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

时间:2017-11-03 06:13:52

标签: python python-3.x

如果用户状态等于"离线"我想知道如何从此列表中删除特定的字典并且订单类型等于"购买" (使用for循环迭代它并在迭代时修改列表因为列表指针而产生异常)

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

2 个答案:

答案 0 :(得分:1)

您可以重新创建没有不需要的元素的列表:

mylist = [key_values for key_values in mylist if key_values['user']['status'] != 'offline']

(*)不要使用保留关键字命名变量。

答案 1 :(得分:1)

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'}]