【问题标题】:Python Lists extract Elements by identifierPython 列表按标识符提取元素
【发布时间】:2020-06-10 16:43:46
【问题描述】:

我在 Python 中有两个列表,并希望通过它们的第一列来提取它们的值。第一个列表有两列,第二个有一个列:

 type:  id:
 xc1x   45
 xf4g   65
 gthz   32
 gtr7   22

 type:  (new ID)
 xc1x
 xc1x
 gtr7
 xf4g
 xc1x
 gthz
 gtr7

第二个列表应按类型附加第一个列表中的 ID。所以 Python 应该遍历第二个列表(只是“类型”)并在匹配时从第一个列表(类型和 id)中获取 ID。有什么好方法可以做到这一点?该列表有 50-1000 行。

【问题讨论】:

  • 列表如何有“列”?第一个列表是元组列表吗?
  • 我使用“list(zip(ab,cb))”函数将两个列表放在一起并创建第一个列表
  • 这确实是一个元组列表。你这样做而不是制作字典有什么原因吗?
  • zip() 函数我用于许多其他包含两个以上值的列表。主要是它的三到七个值放在一起。在这种情况下,字典是个好主意。但据我所知,dict 仅适用于两个值,而不是更多。

标签: python list iterator append


【解决方案1】:

这些列表是如何存储的?好像是字典。如果是这种情况,您只需要迭代第一个并将其值存储在第二个中。看来您正在寻找如何加入。

【讨论】:

    【解决方案2】:

    根据您的 cmets,第一个列表通过执行 list(zip(ab, cb)) 创建为元组列表。我认为您最好将其创建为 dict:

    id_dict = {type: id for type, id in zip(ab, cb)}  # this is the "first list" equivalent
    

    现在要获取第二个列表中任何内容的 ID,您可以这样做:

    for type in second_list:
        id = id_dict[type]  # now do whatever you want with this
    

    或者您可以使用另一个理解来构建另一个字典或列表。拥有更多关于最终目标的背景信息将更容易建议从这里采取的方向。

    【讨论】:

      猜你喜欢
      • 2014-03-07
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2017-03-18
      • 2019-11-07
      • 2019-06-28
      相关资源
      最近更新 更多