¿Existe una función incorporada para convertir una matriz de cadenas en un diccionario de cadenas o necesita hacer un ciclo aquí?La manera más elegante de convertir una matriz de cadenas en un diccionario de cadenas
Respuesta
Suponiendo que está utilizando .NET 3.5, puede convertir cualquier secuencia (es decir IEnumerable<T>
) en un diccionario:
var dictionary = sequence.ToDictionary(item => item.Key,
item => item.Value)
donde Key
y Value
son las propiedades adecuadas que desea actuar como clave y valor Puede especificar solo una proyección que se utiliza para la clave, si el elemento en sí es el valor que desea.
Así, por ejemplo, si desea asignar la versión mayúscula de cada cuerda a la original, se puede utilizar:
var dictionary = strings.ToDictionary(x => x.ToUpper());
En su caso, ¿qué quieres las claves y valores que sean?
Si en realidad sólo quiere un conjunto (que se puede comprobar para ver si contiene una cadena en particular, por ejemplo), puede utilizar:
var words = new HashSet<string>(listOfStrings);
Ese risc siempre está ahí, a menos que revise antes para obtener claves duplicadas. – Dykam
@Dykam: De hecho. Si desea manejar duplicados, posiblemente desee 'ToLookup' en su lugar. Con suerte, descubriremos más si el OP explica lo que realmente están tratando de hacer. –
¡Genial! ¿Qué sucede si tengo una matriz de cadenas de cadenas y una serie de valores de la misma longitud? ¿Puede Linq ayudarme entonces? –
¿Qué quieres decir?
Un diccionario es un hash, donde las teclas se asignan a los valores.
¿Cuáles son sus claves y cuáles son sus valores?
foreach(var entry in myStringArray)
myDictionary.Add(????, entry);
Puede utilizar LINQ para hacer esto, pero la pregunta que Andrew le pregunta debe ser contestada primero (cuáles son sus claves y valores):
using System.Linq;
string[] myArray = new[] { "A", "B", "C" };
myArray.ToDictionary(key => key, value => value);
el resultado es un diccionario de esta manera:
A -> A
B -> B
C -> C
Si necesita un diccionario sin valores, puede que necesite un HashSet
:
var hashset = new HashSet<string>(stringsArray);
OMI, cuando decimos una Array
estamos hablando de una lista de valores que podemos obtener un valor con llamar a su índice (valor => matriz [índice]), por lo que un diccionario correcto es un diccionario con una clave de índice.
Y con gracias a @ John Skeet, la forma correcta de lograr esto es:
var dictionary = array
.Select((v, i) => new {Key = i, Value = v})
.ToDictionary(o => o.Key, o => o.Value);
Otra forma es utilizar un método de extensión de esta manera:
public static Dictionary<int, T> ToDictionary<T>(this IEnumerable<T> array)
{
return array
.Select((v, i) => new {Key = i, Value = v})
.ToDictionary(o => o.Key, o => o.Value);
}
Esto a) será ineficiente; b) falla si el mismo valor ocurre más de una vez en la matriz. Podría usar la sobrecarga 'Select', que también proporciona el índice, para hacer esto de manera más eficiente y confiable. –
Gracias, y edito el código como se hizo referencia para usar 'Seleccionar';). –
- 1. La manera más elegante de consultar cadenas XML usando XPath
- 2. Convertir diccionario.keyscolección en una matriz de cadenas
- 3. ¿Una forma elegante de convertir cadenas de valores en una matriz Javascript?
- 4. convertir una matriz FileInfo en una matriz de cadenas C#
- 5. ¿La forma más rápida de convertir una matriz de cadenas en una matriz doble?
- 6. la conversión de una lista de cadenas en una matriz numpy de una manera más rápida
- 7. Convertir matriz de cadenas arrayList
- 8. Convertir matriz de cadenas en minúsculas
- 9. Cómo convertir un NSArray de cadenas en una matriz de cadenas únicas, en el mismo orden?
- 10. Convertir una matriz int a una matriz de cadenas
- 11. Una manera sencilla de convertir una cadena en un diccionario
- 12. Convertir una matriz de cadenas a matriz de bytes
- 13. ¿Es posible convertir una matriz de cadenas en una cadena?
- 14. ¿la mejor manera de convertir una matriz de cadenas a un vector?
- 15. ¿Manera elegante de escribir cadenas de pato, símbolos y matrices?
- 16. manera eficiente de buscar cadenas en la lista de cadenas?
- 17. manera elegante de hacer coincidir dos cadenas comodín
- 18. Eliminar cadenas duplicadas en matriz de cadenas
- 19. C# cómo convertir File.ReadLines en una matriz de cadenas?
- 20. Convertir matriz de cadenas a List <string>
- 21. dos cadenas de clave de un diccionario
- 22. manera más eficiente de encontrar cadenas parciales en un archivo grande de cadenas (python)
- 23. Buscando una manera más rápida de realizar búsquedas de cadenas
- 24. Borrar matriz de cadenas
- 25. Transformando la representación de cadenas de un diccionario en un diccionario real
- 26. carriles - desplegable de una matriz de cadenas
- 27. ¿La forma más rápida de convertir cadenas a binario?
- 28. ¿Cómo puedo convertir una lista XML simple en una matriz de cadenas sin un bucle?
- 29. ¿Convertir una matriz de enteros en una matriz de cadenas en Ruby?
- 30. ¿Manera pitónica de convertir una lista de cadenas en un diccionario con las cadenas de índice impar como claves e incluso las indexadas como valores?
Depende de la estructura que desea todo en todos. Sin embargo, terminarás con un ciclo, sin importar cómo lo mires. –
Siempre habrá un bucle en alguna parte, pero LINQ le permite ocultarlo, es decir, no necesita tener el bucle en * su * código. –