从字典中获取数据列表
问题描述:
用两个数组填充字典。我不知道如何使用foreach从它获取数据列表。例如:a 17,l 16 ....请告诉我该怎么做?从字典中获取数据列表
string[] words = { "a", "l", "c", "d", "h", "o", "t" };
int[] times = { 17, 16, 1, 02, 11, 19, 21 };
Dictionary<string[], int[]> data= new Dictionary<string[], int[]>();
data.Add(words, times);
foreach (KeyValuePair<string[], int[]> pair in data)
{
Console.WriteLine("Key: {0}, Value: {1}", pair.Key, pair.Value);
}
// output: Key: System.String[], Value: System.Int32[]
答
从你的例子好像你正在寻找其中每个索引我想要的关键是在words
第i个项目,并在times
第i个项目的价值Dictionary<string,int>
。
甲foreach
方法将是:
var dict = new Dictionary<string,int>();
for(int i = 0; i < words.Lenth; i++)
{
dict.Add(words[i], times[i];
}
注意,这假定的次数的相同的量times
至少为words
,如果不将导致IndexOutOfRangeException
。
LINQ的做法将是:
// C# 7.0
var dict = words.Zip(times, (w,t) => (w,t)).ToDictionary(key => key.w, value => value.t);
// C# prior to 7.0
var dict = words.Zip(times, (w,t) => new { w,t })
.ToDictionary(key => key.w, value => value.t);
注意Zip
将通过收集与下位计数返回的项目。
你是什么意思的数据列表? – Sajeetharan
你的问题不清楚。你的意思是你想用这些数据填充字典吗?以什么形式?对于每个单词作为关键将所有数字作为值?对于每件作品都有一个数字作为价值?你有什么尝试? –
你可能不想要一个'Dictionary [string [],int []>''你想要一个'Dictionary' –