【问题标题】:Searching a 2D nested list based on index value根据索引值搜索二维嵌套列表
【发布时间】:2020-09-05 08:54:22
【问题描述】:

我想在二维嵌套列表中搜索一个字符串,并在同一个嵌套列表中获取下一个值。

list_1=[["a", "b"], ["c", "d"], ["a", "e"],["c", "f"]]
search="c"

示例:如果我正在搜索“c”,那么我应该得到元素“d”和“f”,假设如果我正在搜索“a”,它应该返回“b”和“e”。

这是我尝试过的。我能够根据需要返回下一个元素的索引,它再次以嵌套列表的形式返回,但我无法获取元素本身。请提供一些建议。

out = [[elem,elen+1] for elem,i in enumerate(list_1) for elen,y in enumerate(i) if search in y]
#[[1, 1], [3, 1]]

注意:没有硬编码,也不是重复的。如果能维持秩序就更好了。

【问题讨论】:

    标签: python list


    【解决方案1】:

    下面

    list_1=[["a", "b"], ["c", "d"], ["a", "e"],["c", "f"]]
    search="c"
    list_2 = [e[1] for e in list_1 if search == e[0]]
    print(list_2)
    

    输出

    ['d', 'f']
    

    【讨论】:

      【解决方案2】:

      你可以使用numpy数组:

      import numpy as np
      
      list_1=np.array([["a", "b"],
             ["c", "d"],
             ["a", "e"],
             ["c", "f"]])
      list_result = list_1[list_1[:,0]=="c"]
      print(list_result[:, 1])
      

      【讨论】: