我有一个main函数,包含两个我想输出的字典。我已经省略了字典的创建方式。
这是我的功能:
def main()
dict1 = {'a1':{'b1':1,'c1':2},'a2':{'b2':1,'c2':2}}
dict2 = {'cat':0,'dog':2}
return dict1, dict2
if __main__ == '__main__':
>...main()
这是我在python提示符中调用它的方式:
>>from filename import *
>>x,y=main()
这或多或少是我得到的
>>print x
'a1'
>>print y
'a2'
但这就是我想要的:
>>print x
{'a1':{'b1':1,'c1':2},'a2':{'b2':1,'c2':2}}
>>print y
{'cat':0,'dog':2}
我做得不对?
答案 0 :(得分:2)
代码已完全符合您的预期:
In [4]: def main():
...: dict1 = {'a1':{'b1':1,'c1':2},'a2':{'b2':1,'c2':2}}
...: dict2 = {'cat':0,'dog':2}
...: return dict1, dict2
...:
In [5]: x, y = main()
In [6]: x
Out[6]: {'a1': {'b1': 1, 'c1': 2}, 'a2': {'b2': 1, 'c2': 2}}
In [7]: y
Out[7]: {'cat': 0, 'dog': 2}
也许您不小心调用了另一个main()
函数(例如,具有不同return
语句的函数)?
答案 1 :(得分:2)
您不是return
dict1, dict2
,而只是dict1
。您可以轻松地重现此行为:
>>> dict1 = {'a1': 'some_stuff', 'a2': 'some_other_stuff'}
>>> dict2 = {'cat': 0, 'dog': 0}
>>> return_val = dict1
>>> x, y = return_val
>>> x
'a1'
>>> y
'a2'
>>> return_val = dict1, dict2
>>> x, y = return_val
>>> x
{'a1': 'some_stuff', 'a2': 'some_other_stuff'}
>>> y
{'cat': 0, 'dog': 0}
发生这种情况是因为当您遍历字典时会获得其密钥,因此当您执行x, y = main()
并main
返回dict1
时,您将遍历dict1
的密钥。由于恰好有两个,因此您不会收到错误,x
和y
会获取这些密钥的值。
如果您更改main
以返回两个词典,那么您应该没问题。