Heim >Backend-Entwicklung >C++ >Wie kann man mehrere Schlüssel, die demselben Wert in einem Wörterbuch zugeordnet sind, effizient abrufen?

Wie kann man mehrere Schlüssel, die demselben Wert in einem Wörterbuch zugeordnet sind, effizient abrufen?

Susan Sarandon
Susan SarandonOriginal
2025-01-21 03:22:16409Durchsuche

How to Efficiently Retrieve Multiple Keys Associated with the Same Value in a Dictionary?

So rufen Sie mehrere Schlüssel mit angegebenen Werten aus einem generischen Wörterbuch ab

Generische .NET-Wörterbücher bieten eine effiziente Möglichkeit, den mit einem Schlüssel verknüpften Wert abzurufen, wie im folgenden Code gezeigt:

<code class="language-csharp">Dictionary<int, string> greek = new Dictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");
string secondGreek = greek[2];  // Beta</code>

Das Abrufen des mit einem bestimmten Wert verknüpften Schlüssels ist jedoch nicht so einfach wie mit einem generischen Wörterbuch, da ein generisches Wörterbuch nur ein einziges Schlüssel-Wert-Paar für jeden eindeutigen Schlüssel speichert. Dies kann zu Herausforderungen führen, wenn Sie alle Schlüssel finden müssen, die einem bestimmten Wert entsprechen, insbesondere wenn mehrere Schlüssel möglicherweise demselben Wert zugeordnet sind.

Um dieses Problem zu lösen, implementiert der folgende Code ein bidirektionales Wörterbuch, das das generische Abrufen von Schlüsseln und Werten ermöglicht:

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.Text;

class BiDictionary<TFirst, TSecond>
{
    IDictionary<TFirst, IList<TSecond>> firstToSecond = new Dictionary<TFirst, IList<TSecond>>();
    IDictionary<TSecond, IList<TFirst>> secondToFirst = new Dictionary<TSecond, IList<TFirst>>();

    // ... (方法和属性的实现) ...
}</code>

Dieses bidirektionale Wörterbuch verwaltet zwei Sätze von Schlüssel-Wert-Zuordnungen: einer ist eine Liste vom ersten Schlüssel bis zum zweiten Wert und der andere ist eine Liste vom zweiten Wert bis zum ersten Schlüssel. Dies ermöglicht einen effizienten bidirektionalen Abruf von Schlüsseln und Werten.

Stellen Sie sich zum Beispiel ein Wörterbuch mit griechischen Wörtern vor, in dem jedem griechischen Buchstaben ein numerischer Wert zugewiesen ist. Mit einem Zwei-Wege-Wörterbuch können Sie leicht den griechischen Buchstaben ermitteln, der einem bestimmten numerischen Wert entspricht:

<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");
greek.Add(5, "Beta");

// 检索对应于值“Beta”的希腊字母
IList<int> betaKeys = greek.GetBySecond("Beta");

// 显示结果
Console.WriteLine("Keys for \"Beta\":");
foreach (int key in betaKeys)
{
    Console.WriteLine(key);
}</code>

Diese Methode behandelt doppelte Werte elegant, indem sie eine Liste von Schlüsseln zurückgibt, die dem angegebenen Wert entsprechen. Es zeigt die Vielseitigkeit von Zwei-Wege-Wörterbüchern beim Umgang mit Wörterbüchern, in denen mehrere Schlüssel demselben Wert zugeordnet werden können.

Das obige ist der detaillierte Inhalt vonWie kann man mehrere Schlüssel, die demselben Wert in einem Wörterbuch zugeordnet sind, effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn