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

时间:2017-04-24 10:33:27

标签: python python-3.5

我有一个字典数组USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0"

records

我想返回除了元素(dicts)之外的所有记录 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; = 1。 怎么这么快?我不想在循环中添加id语句。

4 个答案:

答案 0 :(得分:0)

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

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

当然,如果您认为列表理解更清晰,您可以将列表理解移到它自己的行上。这种方法的缺点是,它创建了一个新列表,其中包含了您想要的所有项目。

答案 1 :(得分:0)

您可以使用列表理解:

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

答案 2 :(得分:0)

不幸的是,我认为在这种情况下列表理解更快,不确定如果没有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}]

如果你想改变记录:

records = [d for d in records if d['id']!=1]
print (records)

打印:

[{'id': 0, 'created_at': 0}]

或其他人用return语句说:

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

答案 3 :(得分:0)

return_records = []
for r in records:
    for key, value in r.items():
        while key == 'id' and value != 1:
            return_records.append(r)
            break
return return_records

(OR)
tmp_record = records
for r in tmp_record:
    for key, value in r.items():
        while key == 'id' and value == 1:
            records.remove(r)
            break
return records