2015-09-09 5 views
5

मैं एक कोड में कुछ इस तरह मिल गया है मैं के साथ काम कर रहा हूँ:असाइन समारोह के उत्पादन

[], my_variable = my_function(a, b) 

जहां my_function के उत्पादन में चला जाता है की तरह:

return some_dict, some_list 

यह काम करने लगता है - एक सिस्टम के यूनिट परीक्षण विफल नहीं होते हैं, लेकिन जब मैं इसे पायथन कंसोल ("[]" में शब्दकोश निर्दिष्ट करता हूं) इसे बढ़ाता है:

ValueError: too many values to unpack 

क्या आपने ऐसा कुछ देखा है? रिक्त सूची निरंतर "[]" काम करने के लिए एक शब्दकोश (या कुछ और) असाइन कैसे करता है?

या यह नहीं करता है और परीक्षण कुछ याद कर रहे हैं ...

+0

वास्तविक 'my_function' कोड मददगार होगा - संभावना पहला परिणाम एक dict बिल्कुल नहीं है:' [], qwe = {1: 1} '12'' मूल्य फेंकता त्रुटि – J0HN

+1

'[], ए = ({}, 1) 'काम करता है, यद्यपि। – Kevin

+0

'[ए], qwe = {1: 2}, '12' 'भी काम करता है; 'ए' 1 – J0HN

उत्तर

2

क्योंकि आपके परीक्षण फ़ाइल में, return value{} है यह।

>>> [] = {} 
>>> [] = {1:2} 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack 


>>> [] = [] 
>>> [] = [1,2] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack 
+0

या तो आप प्रश्न में उजागर होने से अधिक जानते हैं, या यह प्रश्न का उत्तर नहीं देता है – J0HN

+0

@ केविन पायथन dict या सूची जब तक यह पुनरावृत्त है। – Andrey

+0

हां, सबसे अधिक संभावना 'some_dict' केवल परीक्षण मामले में '{}' है। धन्यवाद! – Gwidryj

1

आप वास्तव में सूचीबद्ध करने के लिए असाइन नहीं कर सकते क्योंकि यह चर नहीं है, आप कई चर के लिए आवंटित करने के लिए सूची सिंटैक्स का उपयोग कर सकते हैं:

[a, b, c] = [1, 2, 3] 

सिर्फ एक को 1 आवंटित और बहुत आगे जाएगा।

तुम क्या कर रहे इस अभिव्यक्ति के साथ व्यक्त किया जा सकता:

[] = {"a":1} 

क्या अजगर करने की कोशिश करता सूची में आइटम्स की राशि के साथ शब्दकोश में मदों की राशि से मेल करने के लिए है। यह मेल नहीं खाता है और एक त्रुटि उठाता है। आप ऐसा कर सकता है:

[x] = {"a":1} 
संबंधित मुद्दे