筛选列表中指定 doc_id 的元素数量

使用 GPT-4o Mini 回答,作者 GPT4oMini.app

问题:

[{'doc_id':'123', 'key': '1'},{'doc_id': '123', 'key':'2'}, {'doc_id': 'abc', 'key': '3'},{'doc_id': '123', 'key':'4'}, {'doc_id': 'abc', 'key':'5'}] 请实现一个需求,列表中doc_id为123的保留2个,doc_id为abc的保留一个,使用python代码实现

答案:

可以使用 Python 的列表推导式和字典来实现这个需求。以下是一个示例代码,展示了如何从给定的列表中筛选出符合条件的元素:

data = [
    {'doc_id': '123', 'key': '1'},
    {'doc_id': '123', 'key': '2'},
    {'doc_id': 'abc', 'key': '3'},
    {'doc_id': '123', 'key': '4'},
    {'doc_id': 'abc', 'key': '5'}
]

# 用于存储结果
result = []
# 记录每个 doc_id 的数量
count = {'123': 0, 'abc': 0}

# 遍历原始数据
for item in data:
    doc_id = item['doc_id']
    # 根据 doc_id 进行条件判断
    if doc_id == '123' and count['123'] < 2:
        result.append(item)
        count['123'] += 1
    elif doc_id == 'abc' and count['abc'] < 1:
        result.append(item)
        count['abc'] += 1

print(result)

代码解释:

  1. 初始化一个空列表 result 用于存储最终结果。
  2. 创建一个字典 count 来记录每个 doc_id 的数量。
  3. 遍历原始数据列表 data,根据 doc_id 的值进行条件判断:
    • 如果 doc_id'123',并且已经保留的数量少于 2,则将该项添加到结果列表中,并更新计数。
    • 如果 doc_id'abc',并且已经保留的数量少于 1,则将该项添加到结果列表中,并更新计数。
  4. 最后打印结果。

输出结果:

运行上述代码后,result 将包含以下内容:

[{'doc_id': '123', 'key': '1'}, {'doc_id': '123', 'key': '2'}, {'doc_id': 'abc', 'key': '3'}]

这样就实现了保留 doc_id123 的 2 个元素和 doc_idabc 的 1 个元素的