C# - Dictionary에서 key, value 삭제

Dictionary에서 key 또는 value로 데이터를 삭제하는 방법을 소개합니다. 또한 모든 데이터를 제거하는 방법을 소개합니다.

1. Remove() : key로 데이터 삭제

Dictionary.Remove(key)는 딕셔너리에서 key가 있을 때 데이터를 삭제하며 true를 리턴합니다. key가 존재하지 않는 경우 삭제가 실패하며 false가 리턴됩니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            Dictionary<string, int> dict = new Dictionary<string, int>()
            {
                { "one", 1 },
                { "two", 2 },
                { "three", 3 }
            };

            if (dict.Remove("two")) {
                Console.WriteLine("key 'two' removed form dictionary");
            }

            Console.WriteLine(String.Join(", ", dict));
        }
    }
}

Output:

key 'two' removed form dictionary
[one, 1], [three, 3]

2. Where() : key로 데이터 삭제

Dictionary.Where(function)은 function에 맞는 데이터만 새로운 딕셔너리에 추가하여 리턴합니다.

아래 예제의 함수 kvp => !kvp.Key.Equals(keyToRemove)는 key가 two와 다른 데이터만 추가합니다. 즉, 키가 two인 데이터는 제거됩니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            Dictionary<string, int> dict = new Dictionary<string, int>()
            {
                { "one", 1 },
                { "two", 2 },
                { "three", 3 }
            };

            String keyToRemove = "two";
            Dictionary<string, int> result = dict.Where(kvp => !kvp.Key.Equals(keyToRemove))
                    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

            Console.WriteLine(String.Join(", ", result));
        }
    }
}

Output:

[one, 1], [three, 3]

3. Where() : value로 데이터 삭제

위의 Where() 예제와 비슷하지만, 특정 value를 찾아서 데이터를 삭제할 수 있습니다.

key와 다르게 value는 동일한 값을 갖고 있는 데이터가 있을 수 있습니다. 이런 경우, 다수의 요소들이 삭제됩니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            Dictionary<string, int> dict = new Dictionary<string, int>()
            {
                { "one", 1 },
                { "two", 2 },
                { "three", 3 }
            };

            int valueToRemove = 3;
            Dictionary<string, int> result = dict.Where(kvp => !kvp.Value.Equals(valueToRemove))
                    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

            Console.WriteLine(String.Join(", ", result));
        }
    }
}

Output:

[one, 1], [two, 2]

4. 모든 데이터 제거

Dictionary.Clear()는 딕셔너리의 모든 데이터를 삭제합니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            Dictionary<string, int> dict = new Dictionary<string, int>()
            {
                { "one", 1 },
                { "two", 2 },
                { "three", 3 }
            };

            dict.Clear();

            Console.WriteLine(String.Join(", ", dict));
        }
    }
}

Output:

Loading script...
codechachaCopyright ©2019 codechacha