【发布时间】:2017-12-05 20:04:58
【问题描述】:
我是 C# 新手,目前正在尝试找出实现以下功能的最佳方法:
我有一个相关组的物种列表:
Bird: "Budgie", "Parrot"
Dog: "Pitbull", "Labrador"
Cat: "Cheetah", "Lion"
给定一串动物,我需要返回它的组。 例如。 “猎豹”将返回“猫”。
我已经实现了以下:
// create list one and store values
List<string> valSetOne = new List<string>();
valSetOne.Add("Budgie");
valSetOne.Add("Parrot");
// create list two and store values
List<String> valSetTwo = new List<String>();
valSetTwo.Add("Lion");
valSetTwo.Add("Cheetah");
// create list three and store values
List<String> valSetThree = new List<String>();
valSetThree.Add("Labrador");
valSetThree.Add("Pitbull");
// add values into map
map.Add("Bird", valSetOne);
map.Add("Cat", valSetTwo);
map.Add("Dog", valSetThree);
foreach(KeyValuePair<string, List<string>> kvp in map){
foreach(string value in kvp.Value)
{
Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, value);
}
}
除了使用 foreach 循环之外,有没有更快的方法来找到给定动物值的键?
//编辑:
目前正在尝试使用元组进行初始化
var tupleList = new List<Tuple<string, List<string>>>
{
new Tuple<string, List<string>>("cat", { "cheetah", "lion"})
};
我收到以下错误:意外符号 `{'
【问题讨论】:
-
字典适合按键查找值,而不是相反。
-
是的,你可以,但这不是正确的方式,你必须使用类,c# 是 OOP 语言
-
@jonathana 创建类是一种工具。它对解决某些问题很有用,而对其他问题则无用。除了显示的 sn-p 中的代码需要在某个对象的某个成员中之外,我看不出有什么理由需要创建任何新对象来解决这个特定问题。
-
如果您希望能够轻松查找动物的类别,请创建一个将每个动物映射到其类别的查找。
-
你不能只写
, { "...."}。你需要new List<string> {...}。请参阅下面的更新
标签: c# dictionary filter