【发布时间】:2017-02-22 00:55:35
【问题描述】:
我有一个要求,我想使用字典来存储“key=value”对,但是现在我需要存储“重复”键值。
我有一行分隔文本(以竖线字符 ("|") 分隔,我将其拆分为一个数组,然后拆分为一个字典(见下文)
string[] t = rawMessage.Split(new[] { '|', '|' }, StringSplitOptions.RemoveEmptyEntries);
message = t.ToDictionary(s => s.Split('=')[0], s => s.Split('=')[1]);
如果不存在重复项,这可以正常工作,但我想以一种在插入前调整键值的方式存储重复键。
例子
A=1|B=2|C=3|D=4|D=5|D=5
我希望将键值调整为:
A=1
B=2
C=3
D=4
D[1]=5
D[2]=5
然后我可以提取第二个和第三个“D”条目的条目,因为它们有一个新的键值。
每个重复项都是一个不完整的记录,因此我希望能够按照输入的顺序引用它们。例如,第四个条目是 D[4]。关于对所有值使用相同键值的建议,可能/将会令人困惑,我最终可能会提取错误的信息(但请记住)。
我想避免事先循环遍历数组,并想知道是否有人知道我可以在上面代码的 ToDictionary 部分执行此操作的方法。
对于相当基本的解释表示歉意。 许多线程都处理删除字典中的欺骗,我知道这不是字典的预期用途。
【问题讨论】:
-
您必须设计自己的数据结构来跟踪重复项。或者按照@itsme86 所说的去做。但这取决于您要如何检索该信息。
-
字典的消费者如何知道他们想要第一个
D键还是第二个? -
Quantic - 第一个条目是 D,第二个是 D[1],第三个是 D[2],依此类推。 “[]”的格式只是唯一插入密钥的东西。然后他们会输入他们想看到的键。
标签: c# dictionary