【发布时间】:2012-08-07 04:55:27
【问题描述】:
这可能是一个简单的问题,但我自己无法找到直接的答案。
给定两个列表,一个只有一个 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”格式相同的列表条目怎么办?按照规则,我会确保接受原始问题的答案,但如果你们都想跟上乐趣,让我们看看我们得到了什么!
【问题讨论】:
标签: python filter list-comprehension