Proper implementation of a bidirectional dictionary, also known as "BiMap" or "Two-way dictionary", for .NET Standard 2.0.
$ dotnet add package BidirectionalDictionaryThe bidirectional dictionary is a dictionary with non-null unique values that provides access to an inverse dictionary.
using System.Collections.Generic;
var countryCapitalDictionary = new BidirectionalDictionary<string, string>()
{
["Italy"] = "Rome",
["India"] = "Mumbai",
["USA"] = "Washington, D.C.",
};
var capital = countryCapitalDictionary["Italy"]; // "Rome"
var country = countryCapitalDictionary.Inverse["Rome"]; // "Italy"
Also, you can create a read-only instance of a bidirectional dictionary:
var readOnlyDictionary = countryCapitalDictionary.AsReadOnly(); // ReadOnlyBidirectionalDictionary<string, string>
BidirectionalDictionary is licensed under the MIT license.