0

dictionary1このように見えます

[DATA_WZD],[WERKZEUG],NUMM=1,GRUP=1,AKR=0,MODE=1,MAGA=1,LAGE=0,DURC=348.2,........NOTCH=130,MANCH=0,RED3=0,NAME="Querschnittblatt 350-3,5mm ",BEME="Bemerkung "
[WERKZEUG],NUMM=2,GRUP=1,MAKR=0,MODE=0,MAGA=0,LAGE=0,DURC=449.6........NOTCH=150,MANCH=0,RED3=0,NAME="Querschnittblatt 450/4,0mm ",BEME="Bemerkung "
[WERKZEUG] and so on.

dictionary2見た目は似ていますが、追加のキーと値があります

[DATA_WZD]
[WERKZEUG],NUMM=1,GRUP=1,MAKR=0,MODE=0,MAGA=0,LAGE=0,DURC=385.8,.......NOTCH=130,MANCH=0,RED3=0,CYCLE=0,CMIN=0,CMAX=0,ACTIVE=1,NAME="Querschnittblatt 35",BEME="Bemerkung"
[WERKZEUG],NUMM=2,GRUP=1,MAKR=0,MODE=0,MAGA=0,LAGE=0,DURC=429.6........NOTCH=150,MANCH=0,RED3=0,CYCLE=0,CMIN=0,CMAX=0,ACTIVE=1,NAME="Querschnittblatt 45",BEME="Bemerkung"
[WERKZEUG].....

dictionary2で欠落しているキーと値dictionary1を の同じ位置に挿入したいdictionary2。このように見えるべきではありません

[DATA_WZD]
[WERKZEUG],NUMM=1,GRUP=1,AKR=0,MODE=1,MAGA=1,LAGE=0,DURC=348.2,........NOTCH=130,MANCH=0,RED3=0,CYCLE=0,CMIN=0,CMAX=0,ACTIVE=1,NAME="Querschnittblatt 350-3,5mm ",BEME="Bemerkung "
[WERKZEUG],NUMM=2,GRUP=1,MAKR=0,MODE=0,MAGA=0,LAGE=0,DURC=449.6........NOTCH=150,MANCH=0,RED3=0,CYCLE=0,CMIN=0,CMAX=0,ACTIVE=1,NAME="Querschnittblatt 450/4,0mm ",BEME="Bemerkung "
[WERKZEUG]......

これを行う良い方法は何ですか?

4

2 に答える 2

1

Linq を使用してみることができます。

dict1.Keys.Except(dict2.Keys)
          .ToList()
          .ForEach(k => dict2.Add(k, dict1[k]));

または、dict1 値の代わりに空の文字列が必要な場合:

dict1.Keys.Except(dict2.Keys)
          .ToList()
          .ForEach(k => dict2.Add(k, string.Empty));
于 2013-10-27T15:29:53.830 に答える
0

疑似コードで 2 つの辞書をマージする簡単なアルゴリズムを次に示します。

与えられた

Dictionary dict1,dict2

これを行う:

Dictionary dictRes = new Dictionary;


for each(key in dict1)
  dictRes.Add(dict1(key));

for each(key in dict2)
  if (not dictRes contains element)
    dictRes.Add(dict2(key));
于 2013-10-27T15:24:19.680 に答える