gpt4 book ai didi

python - 根据第二个列表过滤列表

转载 作者:行者123 更新时间:2023-11-28 19:32:42 25 4
gpt4 key购买 nike

这可能是一个简单的问题,但我自己无法找到直接的答案。

给定两个列表,一个只有 ID 列表,另一个有所有数据,包括一些我们不关心的 ID:
all_data = [['abc', 123], ['cde', 234], ['fgh', 345]]
ids = ['abc', 'fgh']

获得以下输出的最佳方法是什么,注意它只保留那些具有相同 ID 的输出:new_data = [['abc', 123], ['fgh', 345]]

我当前的代码是这样的:

for x in all_data:
for y in ids:
if x[0] == y:
new_data.append(x)

您会采取哪些不同的做法?是否有一个内置函数可以处理我在某处遗漏的这个问题?

(我说“类似”是因为它实际上是一个很长的序列,涉及集合和所有这些,这就是为什么没有“pythonic”单行代码可以共享的原因。)

更新:嗯,你们很有趣。

我让它变得更难一点怎么样?如果我有一个字典 all_data_dict 而不是“all_data”,它有几个与“all_data”格式相同的列表条目怎么办?按照规则,我一定会接受原始问题的答案,但如果你们都想继续享受乐趣,让我们看看我们得到了什么!

最佳答案

使用列表理解,其中有条件地检查集合中的成员资格:

>>> all_data = [['abc', 123], ['cde', 234], ['fgh', 345]]
>>> ids = ['abc', 'fgh']
>>> id_set = set(ids)
>>> [s for s in all_data if s[0] in id_set]
[['abc', 123], ['fgh', 345]]

关于python - 根据第二个列表过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11892337/

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