Python 如何从dict数组中删除元素?

Python 如何从dict数组中删除元素?,python,python-3.5,Python,Python 3.5,我有一个字典数组记录 async def execute_query(query): async with self.pool.acquire() as conn: async with conn.cursor() as cur: await cur.execute(query) records = [] async for row in cur: records.ap

我有一个字典数组
记录

async def execute_query(query):
    async with self.pool.acquire() as conn:
        async with conn.cursor() as cur:
            await cur.execute(query)
            records = []
            async for row in cur:
                records.append({
                    'id':    row[0],
                    'created_at': row[1],
                    ...
                })

    return records;
我想返回所有记录,但不包括
id
=1。
如何快速做到这一点?我不想在循环中添加
if-else
语句。

试试这个。它是一个列表理解,过滤掉你不想要的元素

async for row in [x for x in cur if x['id'] != 1 ]:
    records.append....

当然,如果你觉得更清楚的话,你可以把列表移到它自己的行上。不过,这种方法的缺点是,它会创建一个新列表,其中包含您希望从“cur”获得的所有项目。

试试这个。它是一个列表理解,过滤掉你不想要的元素

async for row in [x for x in cur if x['id'] != 1 ]:
    records.append....

当然,如果你觉得更清楚的话,你可以把列表移到它自己的行上。不过,这种方法的缺点是,它会创建一个新列表,其中包含您希望从“cur”获得的所有项目。

您可以使用列表理解:

return [record for record in records if record['id'] != 1]

您可以使用列表理解:

return [record for record in records if record['id'] != 1]

不幸的是,我认为列表理解在这种情况下更快,不确定如果没有if语句是否可能

records = [{'id':1,'created_at':0},
           {'id':0,'created_at':0}
           ]
ones = [d for d in records if d['id']!=1]
print (ones)
印刷品:

[{'id': 0, 'created_at': 0}]
[{'id': 0, 'created_at': 0}]
如果要更改记录,请执行以下操作:

records = [d for d in records if d['id']!=1]
print (records)
印刷品:

[{'id': 0, 'created_at': 0}]
[{'id': 0, 'created_at': 0}]
或者正如其他人在返回声明中所说:

return [d for d in records if d['id']!=1]

不幸的是,我认为列表理解在这种情况下更快,不确定如果没有if语句是否可能

records = [{'id':1,'created_at':0},
           {'id':0,'created_at':0}
           ]
ones = [d for d in records if d['id']!=1]
print (ones)
印刷品:

[{'id': 0, 'created_at': 0}]
[{'id': 0, 'created_at': 0}]
如果要更改记录,请执行以下操作:

records = [d for d in records if d['id']!=1]
print (records)
印刷品:

[{'id': 0, 'created_at': 0}]
[{'id': 0, 'created_at': 0}]
或者正如其他人在返回声明中所说:

return [d for d in records if d['id']!=1]

您应该提供解释,而不仅仅是原始代码。-上面的代码没有使用任何if-else条件。您应该提供解释,而不仅仅是原始代码。-上面的代码没有使用任何if-else条件。