查找两个列表的匹配元素的索引

麦克风

vb.NET

我有两个列表(listA和listB),并且想要返回一个新列表(listC),其中包含与listA相比,listB的匹配元素的索引。

因此,假设:listA = 3,4,5,listB = 1,2,3,4,5,6,7。我希望listC返回2,3,4,因为这些是listB中匹配项的索引。

以下代码将返回listC中listA和listB的匹配值。

Dim commonlist = listA.Intersect(listB).ToList()
For each common As String In commonlist
listC.Add(common)
Console.WriteLine(common)
Next common

我该如何将索引返回给listC或新的listD?

金西尼
Dim listC = listA.Select(Function(itemA) listB.IndexOf(itemA)).ToList()

如果您不熟悉LINQ,则该Select方法具有将列表中的项目映射到新列表的功能。映射功能的作用完全取决于您。通常从项目中获取单个属性值,但是,在您的情况下,它正在获取其他列表中的项目索引。

Select返回一个IEnumerable(Of T),如果您打算做的就是For Each在其上运行一个循环,这就是您所需要的,但是您可以调用ToList创建一个List(Of T)if。

编辑:

我认为我可能对这个问题有轻微的误解。我将保留原始答案,因为我所做的基本上listD是问题中要求的内容,但我将添加有关获取项目和索引的信息。

这是一个选择:

Dim listA As New List(Of Integer) From {1, 2, 3, 9}
Dim listB As New List(Of Integer) From {1, 2, 3, 4, 5, 6}

Dim listC = listA.Select(Function(a) Tuple.Create(a, listB.IndexOf(a))).
                  Where(Function(ta) ta.Item2 <> -1).
                  ToList()

For Each ta In listC
    Console.WriteLine("Value: {0}; Index: {1}", ta.Item1, ta.Item2)
Next

该代码将创建一个列表,Tuples其中每个列表包含一个来自的值listA以及该值在中的索引listB不在两个列表中的那些值均被排除。

如果您想要比a更好的东西,Tuple则可以创建一个Dictionary

Dim listA As New List(Of Integer) From {1, 2, 3, 9}
Dim listB As New List(Of Integer) From {1, 2, 3, 4, 5, 6}

Dim dictionaryC = listA.Select(Function(a) Tuple.Create(a, listB.IndexOf(a))).
                        Where(Function(ta) ta.Item2 <> -1).
                        ToDictionary(Function(ta) ta.Item1,
                                     Function(ta) ta.Item2)

For Each key In dictionaryC.Keys
    Console.WriteLine("Value: {0}; Index: {1}", key, dictionaryC(key))
Next

如果您特别想要两个单独的列表,则可以执行以下操作:

Dim listA As New List(Of Integer) From {1, 2, 3, 9}
Dim listB As New List(Of Integer) From {1, 2, 3, 4, 5, 6}

Dim listC = listA.Intersect(listB).ToList()
Dim listD = listC.Select(Function(c) listB.IndexOf(c)).ToList()

For i = 0 To listC.Count - 1
    Console.WriteLine("Value: {0}; Index: {1}", listC(i), listD(i))
Next

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

匹配两个列表之间的元素,但索引为索引

查找两个列表中匹配元素之间的元素

查找两个列表的相应元素之间的差异的索引

查找两个列表之间差异最大的元素索引

如何查找列表中前两个元素的索引,而前两个元素是另一个列表中的任何元素?

如何在两个列表中的相同索引处查找共同元素

如何有效地找到两个列表中匹配元素的索引

R:在两个列表中找到(最佳/不完全)匹配元素的索引

遍历两个列表并使用pandas python查找匹配的元素

在包含两个特定元素的列表中查找列表

匹配两个numpy数组以查找相同的元素

在两个元素之间的列表中查找所有元素(不使用索引,并且带有环绕)

Python 列表 - 查找位于其他两个元素之间的三元组中元素的索引

比较两个列表并查找变化索引

如何使用Python查找两个列表交集的索引?

查找两个列表的排序以匹配总和

打印两个列表中公共元素的索引

来自两个列表的最大元素的索引

通过其索引交换列表中的两个元素

.index() 显示列表中两个相似元素的索引

比较两个列表并获取相同元素的索引

返回两个列表的公共元素的索引

查找两个关联索引,其中两个元素的总和等于目标值

在两个列表中查找公共元素

匹配两个列表之间的相似元素

如何匹配Scala中两个列表中的元素?

如何依赖匹配具有两个元素的列表?

过滤列表中的前两个匹配元素

比较两个列表以获得不匹配的元素