如何联合2个字典[重复]
Posted
技术标签:
【中文标题】如何联合2个字典[重复]【英文标题】:how to union 2 dictionaries [duplicate] 【发布时间】:2012-11-12 18:26:10 【问题描述】:可能重复:Merging dictionaries in C#
使用具有 2 个类型的字典的 c#4
<string,List<int>>
dictionary1 = [ "key1" , [ 1, 2, 3] ,
"key2" , [ 1, 2, 4 , 6]
]
我想和dictionary2联合
dictionary2 = [ "key0" , [ 1, 2, 3] ,
"key2" , [ 1, 2, 3, 5 , 6]
]
所以得到 =>
dictionary1 + dictionary2 = [ "key1" , [ 1, 2, 3] ,
"key2" , [ 1, 2, 3, 4, 5, 6],
"key0" , [ 1, 2, 3]
]
我该怎么做?
【问题讨论】:
@Candide 它看起来不像 OP 正在寻找的答案,因为他正在寻找双向合并。 顺便问一下,你允许在整数列表中重复吗? (我的意思是 "key1" , 1, 2, 2, 3, 3, 3
。)
如果您想要 LINQ 方法:***.com/a/4792130/1149773
我投票重新打开,因为所谓的“重复”问题似乎是指字典列表而不是 2 个字典
我同意@SamIam,这个问题需要合并值以及整个字典。
【参考方案1】:
Enumerable.Union
?的简单循环:
foreach (var kv in dictionary2)
List<int> values;
if (dictionary1.TryGetValue(kv.Key, out values))
dictionary1[kv.Key] = values.Union(kv.Value).ToList();
else
dictionary1.Add(kv.Key, kv.Value);
【讨论】:
@Haddar:仅供参考,编辑了我的答案,因为我的第一个版本有问题。 我以@L.B 为例,10X【参考方案2】:var result =
dictionary1.Union(dictionary2)
.GroupBy(kv => kv.Key)
.ToDictionary(g => g.Key, g => g.SelectMany(v => v.Value).Distinct().ToList());
【讨论】:
以上是关于如何联合2个字典[重复]的主要内容,如果未能解决你的问题,请参考以下文章