एक शब्दकोश में एक विशिष्ट कुंजी के लिए मूल्य कैसे अपडेट करें 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;
आशा है कि यह मदद की जरूरत में किसी के लिए उपयोगी है।