查找列表中仅出现一次的项目

时间:2018-09-23 12:05:40

标签: c#

我有一个类型为NaN的变量,我正在尝试查找列表中唯一的项,即它们仅出现一次。

示例:q4.fillna(0, inplace=True)
预期输出:result = q4[(q4['Count6'] < q['Count7']) & (q4['Count7'] < q4['Count8'])]

3 个答案:

答案 0 :(得分:3)

只需分组,然后选择计数为1的位置:

var uniqueList = data.GroupBy(x => x).Where(x => x.Count() == 1).Select(x => x.Key).ToList();

答案 1 :(得分:1)

您可能想尝试以下LINQ语句:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var data = new List<int>(new int[] { 1, 1, 5, 2, 2 , 7 });
        var output = data.Select((value, index) => new {value, index})
                                .Where(a => data.Count(b => a.value == b) == 1)
                                .Select(a => a.value)
                                .ToList();

        output.ForEach(o => System.Console.WriteLine(o));
    }
}

如果您仍在寻找索引,则可能需要尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var data = new List<int>(new int[] { 1, 1, 5, 2, 2 , 7 });
        var output = data.Select((value, index) => new {value, index})
                                .Where(a => data.Count(b => a.value == b) == 1)
                                .Select(a => a.index)
                                .ToList();

        output.ForEach(o => System.Console.WriteLine(o));
    }
}

答案 2 :(得分:0)

您也可以使用Linq,

var listA = new List<int> {1, 1, 5, 2, 2 , 7};
var listB = from g in listA.GroupBy(x => x)  where g.Count() == 1  select g.First();
foreach (var item in listB)
{
   Console.WriteLine(item);
}

DOTNET FIDDLE