【发布时间】:2017-03-01 00:03:16
【问题描述】:
我有两个嵌套的字符串列表:
listA = [["SomeString1", "A", "1"],
["SomeString2", "A", "2"],
["SomeString3", "B", "1"],
["SomeString4", "B", "2"]]
listB = [["OtherString1", "A", "1"],
["OtherString2", "A", "2"],
["OtherString3", "B", "1"],
["OtherString4", "B", "2"]]
对于 A 中的每个列表,我想在 B 中找到 (sublistB[1] == sublistA[1]) and (sublistB[2] == sublistA[2])(零索引)的列表。
然后我想将“B”子列表的第一个条目附加到“A”子列表中,这样最终输出将是:
joined = [["SomeString1", "A", "1", "OtherString1"],
["SomeString2", "A", "2", "OtherString2"],
["SomeString3", "B", "1", "OtherString3"],
["SomeString4", "B", "2", "OtherString4"]]
或者更好的是,将条目插入到位置 1:
joined = [["SomeString1", "OtherString1", "A", "1"],
["SomeString2", "OtherString2", "A", "2"],
["SomeString3", "OtherString3", "B", "1"],
["SomeString4", "OtherString4", "B", "2"]]
在 python 中执行此操作的最佳方法是什么?我有一个实现,但有 3 个嵌套循环,这需要一些时间。
我感觉map、filter 和/或reduce 可能会有所帮助,但不确定如何实施?
请注意,列表不一定像我在此处的示例中那样整齐排列。
另外,这非常重要 - 列表的长度可能不同,也不能保证每个子列表都包含匹配项。如果找不到匹配项,我想追加无。
【问题讨论】:
-
顺序重要吗?字典可能是更好的数据结构,例如使用
("A", "1")作为键。 -
顺序无关紧要。如果输出是字典没问题,但输入是两个列表列表
标签: python list join filtering