C#求两个字典的交集并将键与双值存入列表
解决方案
要实现将两个Dictionary<string, int>的交集键、对应currentHashTags的值、对应historicalHashTags的值存入List<(string, int, int),可以通过以下代码完成:
var result = currentHashTags.Keys.Intersect(historicalHashTags.Keys) .Select(key => (key, currentHashTags[key], historicalHashTags[key])) .ToList();
代码说明
- 获取交集键:通过
Intersect方法筛选出同时存在于两个字典中的键; - 映射为值元组:用
Select将每个交集键转换为包含三个元素的元组,分别对应键名、currentHashTags中的值、historicalHashTags中的值; - 转为列表:最后通过
ToList()生成目标类型的列表。
示例验证
假设存在以下两个字典:
Dictionary<string, int> currentHashTags = new() { ["#hashtag1"] = 100, ["#hashtag2"] = 77, ["#hashtag3"] = 150 }; Dictionary<string, int> historicalHashTags = new() { ["#hashtag1"] = 144, ["#hashtag4"] = 66, ["#hashtag5"] = 150 };
执行代码后,result的内容为:
List<(string, int, int)> result = { ("#hashtag1", 100, 144) };
注:由于
Intersect的结果已经保证键同时存在于两个字典中,因此直接通过索引取值不会触发KeyNotFoundException,无需额外判断。
内容的提问来源于stack exchange,提问作者bob mason
相关产品推荐
相关产品推荐

