मैं इस तरह की दो OrderedDict
वस्तुएँ जोड़ना चाहूँगा:
dict1 = OrderedDict([('Table', [10, 20, 30, 'wood']), ('Chair', [200, 300, 400, 'wood'])])
dict2 = OrderedDict([('Table', ['red', 55]), ('Chair', ['blue', 200])])
और इस तरह एक नया OrderedDict
बनाएं (आदेश महत्वपूर्ण है):
dict3 = OrderedDict([('Table', [10, 20, 30, 'wood', 'red', 55]), ('Chair', [200, 300, 400, 'wood', 'blue', 200])])
यदि dict1
या dict2
में कोई कुंजियाँ हैं जो दूसरे में मौजूद नहीं हैं, तो उन्हें अनदेखा कर दिया जाना चाहिए, आउटपुट के लिए केवल मिलान कुंजियों का उपयोग किया जाना चाहिए। सभी मान सूचियां हैं।
2 जवाब
क्योंकि आप अपनी OrderedDict
वस्तुओं के क्रम को संरक्षित करना चाहते हैं, आपको एक पर लूप करना होगा और दो कुंजी सेटों के मिलन का उत्पादन करने के लिए प्रत्येक कुंजी को दूसरे के विरुद्ध परीक्षण करना होगा:
dict3 = OrderedDict((k, dict1[k] + dict2[k]) for k in dict1 if k in dict2)
dict1
पर लूप करना यह सुनिश्चित करता है कि हम नए शब्दकोश के लिए कुंजियों को उसी क्रम में आउटपुट करें, k in dict2
के साथ परीक्षण यह सुनिश्चित करता है कि हम केवल उन कुंजियों का उपयोग करें जो दोनों इनपुट मैपिंग में मौजूद हैं।
आप dict1
को list.extend()
के साथ इन-प्लेस भी अपडेट कर सकते हैं:
for key, value in dict1.items():
if key in dict2:
value.extend(dict2[key])
डेमो:
>>> from collections import OrderedDict
>>> dict1 = OrderedDict([('Table', [10, 20, 30, 'wood']), ('Chair', [200, 300, 400, 'wood'])])
>>> dict2 = OrderedDict([('Table', ['red', 55]), ('Chair', ['blue', 200])])
>>> OrderedDict((k, dict1[k] + dict2[k]) for k in dict1 if k in dict2)
OrderedDict([('Table', [10, 20, 30, 'wood', 'red', 55]), ('Chair', [200, 300, 400, 'wood', 'blue', 200])])
dict3 = {}
for i in dict1:
if i in dict2:
dict3[i]=[]
for j in dict1[i]:
dict3[i].append(j)
for j in dict2[i]:
dict3[i].append(j)
dict1
के तत्वों पर और फिर dict2
पर पुनरावृत्ति कर रहा है, मुझे लगता है कि किसी विशेष कुंजी के सभी मान क्रम में होंगे। मुझे बताएं कि क्या मैं ऐसा सोचने में गलत हूं। :)
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
dict1
याdict2
में सूचियों को अपडेट नहीं करना।dict2
में आदेशdict1
के क्रम से भिन्न हो तो क्या होगा?