Разобрать текст файла в словарь в c # - PullRequest
0 голосов
/ 02 мая 2018

У меня есть текстовый файл с:

0,ke-2,0.0986089045676918
0,putar,0.141656526869241
1,film,0.110677581313152
1,aveng,0.12035192077391

Я хочу разобрать файл txt в словарь со структурой, подобной этой:

structure

    private Dictionary<int, Dictionary<string, double>> openNormalization()
    {
        var temp = new Dictionary<int, Dictionary<string, double>>();
        var file = File.ReadLines("normalization.txt").Cast<string>();
        foreach (string f in file)
        {
            var doc = new Dictionary<string, double>();
            string fwd = "0";
            string[] entry = f.Split(',');
            if (entry[0] == fwd)
            {
                doc.Add(entry[1], Convert.ToDouble(entry[2]));
                fwd = entry[0];
            }
            else
            {
                temp.Add(int.Parse(fwd), doc);
                doc = new Dictionary<string, double>();
                doc.Add(entry[1], Convert.ToDouble(entry[2]));
                fwd = entry[0];
            }
        return temp;
    }

how ca i fix it?

как я могу это исправить?

1 Ответ

0 голосов
/ 02 мая 2018

ваш код может работать, но он работает только в ситуации, когда только 2 ключа (0 & 1) , если вы добавите ключ 2, все сломается

Вы можете использовать LINQ с GroupBy

см. Мой код ниже

private Dictionary<int, Dictionary<string, double>> openNormalization()
{
    var lines = File.ReadLines("normalization.txt");

    return lines
        .Select(line => line.Split(','))
        .GroupBy(item => Convert.ToInt32(item[0]))
        .ToDictionary(groupValues => groupValues.Key, groupValues => groupValues.ToDictionary(item => item[1], item => Convert.ToDouble(item[2])));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...