【问题标题】:Comparing lists of lists and writing certain elements into a new list比较列表列表并将某些元素写入新列表
【发布时间】:2012-06-28 23:28:03
【问题描述】:

这个问题好像被问了几十遍了,但没有一个答案能帮到我,所以我怕我再问一遍(请不要讨厌我!)。 我有两个列表:

amm = [['0005FC66DF', '4403'", ',\n'], [" ['0001C52E02', '4406'", ',\n'],etc] 

data = [['07/11/2012', '09:53:36', 'Thing', '#0F', '0006E7895B', 'T', 'U\n'], ['05/13/2012', '09:54:27', 'Thing', '#0F', '0006E3DADA', 'T', 'U\n'], etc]. 

我想查看 data 列表中的第 5 个元素是否与 amm 列表中的第一个元素相同,如果是,我想将 data 中的列表写入新的列表列表 amv。我已经尝试了一切。我开始了

for i in data:
  if data[i][4] in amm:
    amv[i].append(i)

没有给amv写任何东西,所以我尝试了

amv=[item for item in data if item[4] in[items for items in amm]]

有同样的问题,所以我尝试了

   for i in data:
    for j in amm:
        if i[4] == j[0]:
             amv.append(j)

以及这些主题的一百万种(可能更准确)变体。这应该是一件很简单的事情,但它对我不起作用。任何帮助将非常非常感谢。提前致谢!

编辑 抱歉,这不是很清楚。我要做的是编写一个新列表(amv),其中包含数据中的所有列表,这些列表的第五个元素出现在 amm 中。我展示的所有脚本都没有在新列表 amv 中添加任何内容。 amv 一直是空的,我不知道为什么..

【问题讨论】:

  • 您正在寻找的这些元素 ("0005FC66DF") 在 dataamm 中是唯一的吗?
  • 你的问题既没有解释你到底想做什么,也没有解释你的方法是如何失败的。例如有什么问题?最后的代码sn -p(除了效率很低)?
  • 它们会在数据中重复 1 到几百次,但它们在 amm 中应该是唯一的。 data 中大约有一半会在 amm 中

标签: python list


【解决方案1】:
s = set(x[0] for x in amm)
amv = [x for x in data if x[4] in s]

【讨论】:

  • 嗯,可能。但是由于 OP 说 id 在amm 中是唯一的,因此这应该与原始帖子中的最后一个代码 sn-p 给出完全相同的结果,OP 声称该代码不起作用。
  • 那仍然是 amv 是空白的:/
  • @Snaaa:如果amv 最终为空,那么data 的第4 列中的任何项目都不会出现在amm 的第0 列中。
  • 我试图说服自己这是真的,但打印列表显示有很多匹配项。我会反复检查错别字
  • malevisits=[] s = set(x[0] for x in allmales) malevisits.append([x for x in data if x[4] in s]) 使malevisits=[[] ],如果有帮助的话..
猜你喜欢
  • 2016-04-11
  • 1970-01-01
  • 2017-03-12
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
相关资源
最近更新 更多