डिक्शनरी से डिफॉल्ट का निर्माण कैसे करें?


88

अगर मैं है d=dict(zip(range(1,10),range(50,61)))कि कैसे मैं एक का निर्माण कर सकते collections.defaultdictसे बाहर dict?

एक ही तर्क defaultdictलगता है कि फ़ैक्टरी फ़ंक्शन है, क्या मुझे आरंभ करना होगा और फिर मूल के माध्यम से जाना होगा dऔर अपडेट करना होगा defaultdict?

जवाबों:


99

डॉक्स पढ़ें :

पहला तर्क default_factory विशेषता के लिए प्रारंभिक मूल्य प्रदान करता है; यह किसी को भी चूकता है। शेष सभी तर्कों को उसी तरह से माना जाता है जैसे कि उन्हें कीवर्ड तर्क सहित तानाशाह के पास भेजा गया था

from collections import defaultdict
d=defaultdict(int, zip(range(1,10),range(50,61)))

या एक शब्दकोश दिया d:

from collections import defaultdict
d=dict(zip(range(1,10),range(50,61)))
my_default_dict = defaultdict(int,d)

3
क्या नेस्टेड डक्ट्स के लिए इस दृष्टिकोण का विस्तार करना संभव है? निम्नलिखित उद्देश्य के अनुसार काम नहीं करता है: default_dict = defaultdict(None,{"a":1,"b":{"c":3}})उदाहरण के लिए, default_dict["e"]कोई भी बदले में एक KeyError उठाता है कोई भी नहीं
alancalvitti

4
@alancalvitti क्योंकि गुजरने का Noneमतलब यह नहीं है कि यह अज्ञात कुंजी के लिए कोई भी उत्पन्न करेगा, यह एक का उपयोग नहीं करेगा। आपको करने की आवश्यकता हैdefaultdict(lambda: None, {....})
एरिक डार्सिस

3

आप दूसरे तर्क के रूप में तानाशाह को पारित करके, डिफॉल्ट से डिफॉल्ट का निर्माण कर सकते हैं।

from collections import defaultdict

d1 = {'foo': 17}
d2 = defaultdict(int, d1)

print(d2['foo'])  ## should print 17
print(d2['bar'])  ## should print 1 (default int val )

आप पायथन के किस संस्करण का उपयोग कर रहे हैं? पाइथन 3.8.3 में मेरे लिए डिफ़ॉल्ट इंट वैल 0 है, न कि 1.
श्मुलवाड

0

defaultdict संग्रह से एक विधि है जो तत्व के मौजूद न होने पर मुख्य त्रुटि को वापस नहीं करती है।

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