एक शब्दकोश में एक विशिष्ट कुंजी के लिए मूल्य कैसे अपडेट करें Dictionary<string, int>
?
एक शब्दकोश में एक विशिष्ट कुंजी के लिए मूल्य कैसे अपडेट करें Dictionary<string, int>
?
जवाबों:
केवल दिए गए कुंजी पर शब्दकोश को इंगित करें और एक नया मान निर्दिष्ट करें:
myDictionary[myKey] = myNewValue;
यह सूचकांक के रूप में कुंजी को एक्सेस करके संभव है
उदाहरण के लिए:
Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary["test"] = 1;
dictionary["test"] += 1;
Console.WriteLine (dictionary["test"]); // will print 2
++dictionary["test"];
या dictionary["test"]++;
केवल तभी यदि कुंजी मान "परीक्षण" के साथ शब्दकोश में कोई प्रविष्टि है - उदाहरण: if(dictionary.ContainsKey("test")) ++dictionary["test"];
else dictionary["test"] = 1; // create entry with key "test"
आप इस दृष्टिकोण का अनुसरण कर सकते हैं:
void addOrUpdate(Dictionary<int, int> dic, int key, int newValue)
{
int val;
if (dic.TryGetValue(key, out val))
{
// yay, value exists!
dic[key] = val + newValue;
}
else
{
// darn, lets add the value
dic.Add(key, newValue);
}
}
यहां आपको जो बढ़त मिलती है वह यह है कि आप चेक करते हैं और शब्दकोश में केवल 1 एक्सेस के लिए संबंधित कुंजी का मूल्य प्राप्त करते हैं। यदि आप ContainsKey
अस्तित्व की जांच करने के लिए उपयोग करते हैं और मूल्य का उपयोग करके अद्यतन करते हैं dic[key] = val + newValue;
तो आप शब्दकोश को दो बार एक्सेस कर रहे हैं।
dic.Add(key, newValue);
आप के बजाय उपयोग कर सकते हैं dic[key] = newvalue;
।
LINQ का उपयोग करें: कुंजी के लिए शब्दकोश में प्रवेश करें और मूल्य बदलें
Dictionary<string, int> dict = new Dictionary<string, int>();
dict = dict.ToDictionary(kvp => kvp.Key, kvp => kvp.Value + 1);
यहाँ एक इंडेक्स द्वारा अपडेट करने का एक तरीका है जैसे foo[x] = 9
कि x
एक कुंजी कहाँ है और 9 मान है
var views = new Dictionary<string, bool>();
foreach (var g in grantMasks)
{
string m = g.ToString();
for (int i = 0; i <= m.Length; i++)
{
views[views.ElementAt(i).Key] = m[i].Equals('1') ? true : false;
}
}
अद्यतन - केवल अस्तित्व को संशोधित करें। अनुक्रमणिका उपयोग के दुष्प्रभाव से बचने के लिए:
int val;
if (dic.TryGetValue(key, out val))
{
// key exist
dic[key] = val;
}
अद्यतन या ( यदि मूल्य में मौजूद नहीं है तो नया जोड़ें )
dic[key] = val;
उदाहरण के लिए:
d["Two"] = 2; // adds to dictionary because "two" not already present
d["Two"] = 22; // updates dictionary because "two" is now present
यह आपके लिए काम कर सकता है:
परिदृश्य 1: आदिम प्रकार
string keyToMatchInDict = "x";
int newValToAdd = 1;
Dictionary<string,int> dictToUpdate = new Dictionary<string,int>{"x",1};
if(!dictToUpdate.ContainsKey(keyToMatchInDict))
dictToUpdate.Add(keyToMatchInDict ,newValToAdd );
else
dictToUpdate[keyToMatchInDict] = newValToAdd; //or you can do operations such as ...dictToUpdate[keyToMatchInDict] += newValToAdd;
परिदृश्य 2: जिस दृष्टिकोण का मैंने मूल्य के रूप में एक सूची के लिए उपयोग किया है
int keyToMatch = 1;
AnyObject objInValueListToAdd = new AnyObject("something for the Ctor")
Dictionary<int,List<AnyObject> dictToUpdate = new Dictionary<int,List<AnyObject>(); //imagine this dict got initialized before with valid Keys and Values...
if(!dictToUpdate.ContainsKey(keyToMatch))
dictToUpdate.Add(keyToMatch,new List<AnyObject>{objInValueListToAdd});
else
dictToUpdate[keyToMatch] = objInValueListToAdd;
आशा है कि यह मदद की जरूरत में किसी के लिए उपयोगी है।