86 votos

El acceso a un Diccionario.Teclas Clave a través de un índice numérico

Estoy usando una Dictionary<string, int> donde int es un recuento de la clave.

Ahora, necesito acceder a la insertado última Clave dentro del Diccionario, pero no sé el nombre de la misma. El intento obvio:

int LastCount = mydict[mydict.keys[mydict.keys.Count]];

no funciona, porque Diccionario.Teclas de no implementar un []-indexador.

Me pregunto si hay alguna clase similar? Pensé acerca del uso de una Pila, pero que sólo almacena una cadena. Ahora puedo crear mi propia estructura y, a continuación, utiliza una Pila<MyStruct>, pero me pregunto si no hay otra alternativa, básicamente un Diccionario que implementa un []-indexador en las Teclas?

139voto

Vitor Hugo Puntos 919

Son muy sencillos de realizar. Pero necesitas utilizar linq.

int LastCount = mydict.Keys.ElementAt(mydict.Count -1);

46voto

Andrew Peters Puntos 6012

Usted puede usar un OrderedDictionary.

Representa una colección de clave/valor los pares que se puede acceder mediante la clave o índice.

6voto

Calanus Puntos 6164

¿Por qué no extender el diccionario de la clase para agregar una última clave inserta la propiedad. Algo como la siguiente, tal vez?

public class ExtendedDictionary : Dictionary<string, int>
{
    private int lastKeyInserted = -1;

    public int LastKeyInserted
    {
        get { return lastKeyInserted; }
        set { lastKeyInserted = value; }
    }

    public void AddNew(string s, int i)
    {
        lastKeyInserted = i;

        base.Add(s, i);
    }
}

5voto

Patrick Puntos 20392

Siempre se puede hacer esto:

string[] temp = new string[mydict.count];

Pero yo no lo recomiendo. No hay ninguna garantía de que la última vez se inserta la clave estará en la final de la matriz. El orden de las Teclas en MSDN es indeterminado, y están sujetos a cambios. En mi muy breve test, parece estar en orden de inserción, pero que estaría mejor edificio en la contabilidad adecuada como una pila--como lo sugieren (aunque no veo la necesidad de una estructura en función del resto de declaraciones)--o la única variable de la memoria caché si usted sólo necesita saber la última tecla.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X