Поместить элемент в отдельное значение и считать в словаре - PullRequest
0 голосов
/ 20 января 2019

Допустим, у меня есть List<string>:

Apples
Apples
Apples
Apples
Bread
Bread
Milk

Я хотел бы знать, есть ли способ, как я могу отсортировать это в словарь или любую другую структуру данных, которую вы считаете лучше,

Например:

Apple : 4
Bread : 2
Milk  : 1

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Допустим, у вас есть список строк.Сейчас есть разные возможности.

Решение 1: Используйте простую итерацию

//declare a dic of string, int
Dictionary<string, int> dic = new Dictionary<string,int>

//iterate loop 
foreach (var i in lst)
{
     if (dic.ContainsKey(i))
     {
         dic[i]++;
     }
     else
     {
         dic.Add(i, 1);
     }
}

Решение 2: Используйте Linq Group By

//First group by the items and then transform the solution into dictionary 
var dic = lst.GroupBy(x => x).ToDictionary(y => y.Key, z => z.Count());
0 голосов
/ 20 января 2019

Вы можете сделать что-то вроде этого:

  • Сгруппируйте элементы (используя Linq's GroupBy () ) по их строковому значению ( names )
  • используйте метод ToDictionary () для получения окончательного результата
    • используйте словарь Key для словаря Key (имена уникальны)
    • Количество элементов групп даст значение

List<string> myConsumables = new List<string>() {
    "Apples", "Bread", "Apples", "Apples", "Milk", "Apples", "Bread", "Apples", "Milk"
};

var myDictionary = myConsumables.GroupBy(s => s).ToDictionary(g => g.Key, g => g.Count());

Проверьте это с помощью:

myDictionary.ToList().ForEach(d => Console.WriteLine($"{d.Key}: {d.Value}"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...