अजगर में एक शब्दकोश कुंजी के लिए कई मान कैसे जोड़ें? [बन्द है]


84

मैं एक अजगर शब्दकोश में एक विशिष्ट कुंजी के लिए कई मूल्यों को जोड़ना चाहते हैं। मैं उसे कैसे कर सकता हूँ?

a = {}
a["abc"] = 1
a["abc"] = 2

यह एक ["एबीसी"] के मूल्य को 1 से 2 तक बदल देगा।

इसके बजाय जो मैं चाहता हूं वह एक ["एबीसी"] के लिए कई मान (1 और 2 दोनों) है।

जवाबों:


161

मूल्य को एक सूची बनाएं, जैसे

a["abc"] = [1, 2, "bob"]

अपडेट करें:

मान में कुंजी जोड़ने के लिए, और यदि पहले से ही कोई नहीं है तो सूची बनाने के लिए कुछ तरीके हैं। मैं छोटे चरणों में एक ऐसी विधि दिखाऊंगा।

key = "somekey"
a.setdefault(key, [])
a[key].append(1)

परिणाम:

>>> a
{'somekey': [1]}

अगला, प्रयास करें:

key = "somekey"
a.setdefault(key, [])
a[key].append(2)

परिणाम:

>>> a
{'somekey': [1, 2]}

का जादू setdefaultयह है कि यह उस कुंजी के लिए मूल्य को इनिशियलाइज़ करता है यदि उस कुंजी को परिभाषित नहीं किया गया है, अन्यथा यह कुछ भी नहीं करता है। अब, यह देखते हुए कि setdefaultकुंजी आपको एक ही लाइन में संयोजित कर सकती है:

a.setdefault("somekey",[]).append("bob")

परिणाम:

>>> a
{'somekey': [1, 2, 'bob']}

आपको dictविधियों को देखना चाहिए , विशेष रूप से get()विधि को, और इससे आराम पाने के लिए कुछ प्रयोग करना चाहिए।


8
पोस्ट किए गए समय पर एक नज़र डालें - हम दोनों ने एक ही जवाब बिल्कुल एक ही समय में दिया, नीचे दूसरे पर :)
मैटडोमो

मैं एक-एक करके जोड़ना चाहता हूं।
पायथन एंथनीस

1
जैसे मैं किसी फ़ंक्शन को कुंजी और मान प्रदान करता हूं। यदि कुंजी पहले से ही है, तो उसे नए मान को कुंजी में जोड़ना चाहिए।
पायथन एंथनीस

1
आप जाँच सकते हैं कि क्या टाइप ([["एबीसी") == सूची। यदि नहीं, तो उस सूची में पहले तत्व के रूप में उस आइटम के साथ एक नई सूची बनाएं।
अष्टकवर्ग

2
धन्यवाद, वास्तव में a.setdefault ("somekey", []) पसंद आया। परिशिष्ट ("बॉब")
ARH

22

कैसा रहेगा

a["abc"] = [1, 2]

यह परिणाम होगा:

>>> a
{'abc': [1, 2]}

क्या आप इसी की तलाश में हैं?


मैं एक-एक करके जोड़ना चाहता हूं। जैसे ["abc"] = 1 और एक ["abc"] = "def"
PythonEntharies

@ user1162512 एक ["एबीसी"]। परिशिष्ट ("
डिफ

क्या होगा अगर मैं सूची का उपयोग नहीं करना चाहता। क्या मैं अभी भी मूल्य जोड़ सकता हूं? उदाहरण के लिए: मैं एक तानाशाह ["एबीसी": 1] हूं। अब मैं "abc" कुंजी में "def" जोड़ना चाहता हूं। मैं उसे कैसे कर सकता हूँ?
पायथन एंथनीस

2
@ user1162512 यदि आप एक निश्चित कुंजी के लिए एक से अधिक मूल्य रखना चाहते हैं, तो आपको कई मूल्यों के लिए एक सूची या कुछ अन्य कंटेनर का उपयोग करने की आवश्यकता होगी (एक और तानाशाह, एक तुगलकी, आदि)। आप {"abc": 1, 2}एक तानाशाह के रूप में नहीं कर सकते हैं एक कुंजी है: मूल्य जोड़ी, प्रति कुंजी केवल एक मूल्य के साथ।
मैटडामो

2
हम अजगर जुड़वाँ हैं :)
राष्ट्रपति जेम्स के। पोल्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.