Python 如何从词典列表中删除词典?

Python 如何从词典列表中删除词典?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,假设我有这个: d_list = [ {'id':1, 'Name': 'Hannah', weight:150}, {'id':2, 'Name':'Andrew', weight:200}, {'id':3, 'Name':'Joe', weight:180}, {'id':3, 'Name':'Joe', weight:180}] 我怎么可能删除id为3的词典?因此,我认为字典列表将包含id 1、2和4或体重超过180的人,因此我不再有id 2 我已经尝试了一切,从简单的事情,如 for

假设我有这个:

d_list = [ {'id':1, 'Name': 'Hannah', weight:150}, {'id':2, 'Name':'Andrew', weight:200}, {'id':3, 'Name':'Joe', weight:180}, {'id':3, 'Name':'Joe', weight:180}]
我怎么可能删除id为3的词典?因此,我认为字典列表将包含id 1、2和4或体重超过180的人,因此我不再有id 2

我已经尝试了一切,从简单的事情,如

for d in d_list:
    if d['weight'] > 180:
        d_list.pop(d)

我在谷歌上找到了其他东西,但没有用。我很抱歉,如果之前已经发布过,或者看起来非常简单,但我已经找了几个小时的东西来帮助我,但什么都没有做。

由于从您正在迭代的列表中删除不是一个好主意,我建议您理解以下列表:

d_list = [item for item in d_list if item['weight'] <= 180]

数组的pop将整数作为参数,而不是对象。使用

d_list.remove(d)
相反


您好,谢谢您的建议,我实际上已经在我的主程序中尝试了该代码,但它什么也没做。不确定我做错了什么。你把清单理解分配给d_清单了吗?或者你是在函数中使用它的吗?顺便说一句:你的代码不是正确的python,除非你将权重分配给某个东西:你需要使用“权重”作为字符串。哦,是的,我的错,我写的那个例子完全是随机的,事实是我的程序有点复杂。我有一个函数,它接受字典列表中的参数和我想要比较其他键值的值,这样我就知道要删除什么,如果我使用的话,这也是一件有趣的事情。删除它将始终跳过中间的一个元素,比如说我要删除前8个字典,2、4、6和8不会被删除,6和8不会被删除”:如果在迭代列表时修改列表,就会发生这种情况。。。
d_list.remove(d)