c# - c#dictionary如何将具有重复值的字符串分隔列表中的数据添加到字典中
问题描述
我正在尝试从字符串列表中创建一个字典,其中每个字符串都包含分隔符分隔的值。有许多值被重复,所以我需要一个具有多个值的键
我已经尝试过创建Dictionary<string, List<string>>
,但这不起作用
每个字符串都像
values = Man: rev
sum:2
Man: rev2
sum:2
values 是一个字符串列表
var d = new Dictionary<string, List<string>>();
foreach(var l in values)
{
var b = l.Split(':');
var k = b.ElementAtOrDefault(0);
if (!d.ContainsKey(k))
d.Add(k, new List<string>());
d[k].Add(l);
}
当我尝试使用上面提到的方法搜索字典时,我无法检索特定键的值
解决方案
根据提供的评论,我建议使用以下构造(我现在无法测试代码,但可以在需要时修复它):
Dictionary<string,string> result = values
.Select(v => v.Split(new char[] {':'}, StringSplitOptions.RemoveEmptyEntries)
.ToLookup(arr => arr.FirstOrDefault(), arr => String.Concat(arr.Skip(1))
.ToDictionary(g => g.Key, g => String.Join(", ", g.Select(i => i.Trim());
解释:首先 Select 进行拆分;ToLookup 创建 > 结构,使用第一个元素作为键,其余的值字符串作为项目(在原始问题中添加了整个字符串 - 我不确定这是否是意图);ToDictionary 然后将 List 转换为字符串(基于注释,因为所需的输出似乎是 Distionary)
推荐阅读
- python-3.x - PyCharm unittests:AttributeError:模块“枚举”没有属性“IntFlag”
- java - Hadoop中的文件复制(无法创建文件)
- regex - 比较 RewriteCond 指令中的值
- python - 我可以使用 try/except 重新启动我的 python 代码吗?
- javascript - 如何在 Javascript 中使用 Chrome.tabs eventListeners
- r - 使用 odbc 在 R studio Session 中从 MS sql 服务器读取和写入问题
- apache-spark - 如何在 Windows 10 上安装 OpenBLAS?
- php - PHPSpreadsheet & CodeIgniter -> 消息:语法错误,意外的“使用”(T_USE)
- ios - 如何使用自定义视图获得与导航栏相同的大小?
- scope - jinja 块中的变量范围是什么?