gpt4 book ai didi

python - 循环迭代并只保留相关元素

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:10 25 4
gpt4 key购买 nike

背景:我有以下 python 3

data = [{'name': 'Jon','id_str': '01'},{'name': 'Tom','id_str': '02'}, {'name': 'Jim','id_str': '03'}] 
id = ['01','1133', '02', '2222']

目标:当 id == id_str 时保留 data 并追加到列表中。

下面的代码附加了第一个 data[{'id_str': '01', 'name': 'Jon'}](这是我想要的)

id_list = [] 
for d in range(len(data)):
t = data[d]
id_str = t['id_str']

if id_str == id[d]:
keep = data[d]
id_list.append(keep)

问题:现在我想转到列表 '1133' 中的下一个 id。但是由于第二个 id'1133' 不等于 data 中第二个值的 id_str ({'name': 'Tom','id_str': '02'},我希望它跳过这个并转到 id 中的第三个值,即 '02'。由于 id ('02') 等于 id_str ({'name': 'Tom','id_str' : '02'}) 我想追加。

我想继续这个过程并循环,直到所有的 id = ['01','1133', '02', '2222'] 都被选中。本站http://love-python.blogspot.com/2012/03/get-next-element-from-list-in-python.html .建议我应该在某个时候添加一个计数器,以及 if-else 语句,但我已经尝试了很多次,但我不确定如何。

我猜我的最终代码看起来像下面这样

id_list = [] 
for d in range(len(data)):
t = data[d]
id_str = t['id_str']

if id_str == id[d]:
keep = data[d]
id_list.append(keep)

elif id_str != id_list[d]:
skip
check next id
else:
if no more id to check
break

期望的最终输出:

[{'name': 'Jon','id_str': '01'},{'name': 'Tom','id_str': '02'}] 

问题:我如何实现这些目标:

1) 保留并附加所需的数据(当 id == id_str 时)

2) 跳过不需要的数据(当 id != id_str 时)

3) 在完成 id 循环后中断(也就是说,一旦 id = ['01','1133', '02', '2222'] 中的所有元素都被索引并与所有 id_str数据)

最佳答案

这是使用列表理解的一种方法。

data = [{'name': 'Jon','id_str': '01'},{'name': 'Tom','id_str': '02'}, {'name': 'Jim','id_str': '03'}] 
ids = ['01','1133', '02', '2222']

res = [d for d in data if d['id_str'] in ids]

# [{'id_str': '01', 'name': 'Jon'}, {'id_str': '02', 'name': 'Tom'}]

关于python - 循环迭代并只保留相关元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49114633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com