ものともしれない日々

参考にできるかかもしれない備忘録

dictionaryのソート

Linqって便利だわ

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

public class Hello{
    public static void Main(){

        int line =int.Parse(System.Console.ReadLine());
        var myTable = new Dictionary<string, int>();
        
        for (int i = 0;i < line;i++) {
            string[] line2 =System.Console.ReadLine().ToString().Split(' ');
            
            // 同じkeyがある場合はvalueを加算する
            if (myTable.ContainsKey(line2[0])) {
                myTable[line2[0]] += int.Parse(line2[1]);
            } else {
                myTable.Add(line2[0], int.Parse(line2[1]));
            }
        }
        //value降順でソート
        IOrderedEnumerable<KeyValuePair<string, int>> sortTable = myTable.OrderByDescending(pair => pair.Value);
        
        foreach(KeyValuePair<string, int> item in sortTable) {
            Console.WriteLine("{0} {1}", item.Key, item.Value);  
        }
    
        Console.ReadKey();
    }
}