繁体   English   中英

部分合并到 python 中的列表

[英]Partially merge to list in python

经典,但我是 python 的新手......并且有一个无法解决的问题。 我假设这相当容易。

我有两个 csv 文件,一个从网络上抓取(a=[]),包含 20000+ 行,另一个从本地系统导出 [b=[]] 80+ 行。 我已经打开文件并将数据存储在列表 a 和 b 中。 它们的结构类似于下面的示例。

a = [[1,'a','b','a@b',11],
    [2,'c','d','c@b',22],
    [3,'e','f','e@b',33]]

b = [['a','banana','A',100],
    ['e','apple','A',100]]

现在我想通过列表a go 并且当列表a中每个子列表的索引1等于列表b中子列表的索引0时,它应该append索引a的3和4。 所以我最终会得到

 c=  [['a','banana','A',100,'a@b',11],
        ['e','apple','A',100,'e@b',33],]

如何做到这一点。 如果该解决方案教授有关 Python 中的结构的知识,则该解决方案不需要很快。 但是,如果用 pandas 轻松解决,我会全力以赴。 如果这个论坛不适合这样的问题,我很抱歉。

这没有经过优化,也不是有效的时间复杂度,但它是可读的并且可以完成工作。

c = []
for a_entry in a:
   for b_entry in b:
       if a_entry[1] == b_entry[0]:
           c.append(b_entry + a_entry[3:])
  • 通过迭代a来制作字典( {index1:[index2,index3],...}

    • 对于每个项目/子列表,使用索引 1 作为键,使用索引 2 和 3 作为值
  • b做同样的事情,除了对键使用索引零,对值使用[1:]

  • 遍历b字典中的项目

    • 使用每个项目的键a字典中获取值
      • 如果有,则扩展b项的值
  • 从修改后的字典中重建b

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM