2013-07-16 12 views
6

मैं अपने सॉफ़्टवेयर के लिए एक एपीआई लिख रहा हूं ताकि मोंगोडब तक पहुंच आसान हो।पिमोंगो एपीआई टाइप एरर: अवांछनीय dict

def update(self, recid):   
    self.collection.find_and_modify(query={"recid":recid}, update={{ "$set": {"creation_date":str(datetime.now()) }}}) 

कौन सा TypeError: Unhashable type: 'dict' फेंकता है:

मैं इस लाइन की है।

यह फ़ंक्शन बस उस दस्तावेज़ को ढूंढने के लिए है जो रिकिड तर्क से मेल खाता है और इसके निर्माण_डेट फ़ील्ड को अपडेट करता है।

यह त्रुटि क्यों हो रही है?

उत्तर

10

यह आसान है, तो आपको अतिरिक्त/निरर्थक घुंघराले ब्रेसिज़ को शामिल किया है, इस प्रयास करें:

self.collection.find_and_modify(query={"recid":recid}, 
           update={"$set": {"creation_date": str(datetime.now())}}) 

युपीडी (यह मानते हुए आप अजगर पर हैं विवरण,> = 2.7):

त्रुटि तब होती है क्योंकि अजगर सोचता है , एक सेट के तत्वों hashable होना चाहिए

The set classes are implemented using dictionaries. Accordingly, the requirements for set elements are the same as those for dictionary keys; namely, that the element defines both __eq__() and __hash__().

दूसरे शब्दों में:: आप {} अंकन के साथ एक सेट बनाने के लिए कोशिश कर रहे हैं जैसे int, string। और आप इसे dict पास कर रहे हैं, जो कि हैशबल नहीं है और सेट का तत्व नहीं हो सकता है।

>>> {{}} 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'dict' 

आशा है कि मदद करता है:

इसके अलावा, इस उदाहरण देखें।

+0

वाह, शानदार! लेकिन यह ऐसी समस्या क्यों पैदा कर रहा था? – RockJake28

+1

मैंने जवाब में सुधार किया है, कृपया जांचें। – alecxe

+0

धन्यवाद, यह मेरे लिए भी कई अन्य चीजों को मंजूरी दे दी है! – RockJake28

संबंधित मुद्दे