【发布时间】:2019-02-06 03:04:48
【问题描述】:
我有两个列表,每个列表都包含多个包含两个元素的子列表。我想创建一个新列表,其中仅包含那些子列表的第一个元素存在于两个原始列表中的子列表。我可以使用列表推导或设置交集在平面列表中执行此操作,但在使用列表列表时会遇到困难。
例如(使用 csv 文件中的数据):
apairs = [['apple', '2.4\n'], ['banana', '2.3\n'], ['orange', '1.8\n'],
['apple', '1.6\n']]
bpairs = [['grape', '2.3\n'], ['apple', '2.1\n'], ['apple', '2.0\n'],
['peach', '1.9\n'], ['plum', '1.5\n']]
我希望创建一个新列表,其中仅包含子列表的第一个元素存在于两个外部列表中的对,并且仅包含具有元素的对的第一个实例。我希望从“alist”中提取该对,以便它包含该对的第二个元素。所以在这种情况下我想要的输出是:
intersectpairs = [['apple, '2.4\n']]
任何帮助将不胜感激!
【问题讨论】:
-
您可以只提取列表,然后从这些列表中提取数据并将其放入列表中。这不是最有效的方法,但它确实是一个不错的备用计划,以防万一没有其他方法。
-
遍历 bpairs 并将水果名称放入哈希集中,然后创建一个新列表并遍历 apairs 并查看它们是否在集合中具有成员资格,这样行吗?
-
感谢大家的帮助!所有提出的解决方案都适用于我提供的案例,但我也想在新列表中只包含一次。如果在任一列表中有多个包含相同第一个元素的对,我只想将第一个包含在新列表中(这样新列表包含第一个元素唯一的对)。很抱歉没有澄清 - 我已经更新了原始帖子以反映这一点。再次感谢!