我有一个字典数组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
语句。
答案 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