这可能是一个简单的问题,但我自己无法找到一个直接的答案。
给定两个列表,一个只有一个 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”格式相同的列表条目怎么办?按照规则,我会确保接受原始问题的答案,但如果你们都想跟上乐趣,让我们看看我们得到了什么!