gpt4 book ai didi

python - 根据调用参数从python函数返回多个字典

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:54 25 4
gpt4 key购买 nike

我希望我的函数根据调用参数返回多个字典。例如如果我不带参数调用函数,它应该返回所有的字典,否则如果我用参数列表调用它,它应该从函数返回相应的字典。显然,如果我调用时没有参数或一个参数,它工作正常,但我在使用多个值时遇到问题。下面的例子说明了这个问题。

def mydef(arg1=None):
a = {'a1':1, 'a2':2}
b = {'b1':1, 'b2':2}
c = {'c1':1, 'c2':2}
d = {'d1':1, 'd2':2}
if arg1 is None:
return a,b,c,d
else:
for x in arg1:
if x == 'a':
return a
elif x == 'b':
return b

w,x,y,z = mydef()
print type(w)
print w

s,t = mydef(['a', 'b'])
print type(s)
print s
print type(t)
print t

疑问:返回的是列表而不是字典:

def mydef(args=None):
dicts = { 'a' :{'a1' : 1, 'a2' :2}, 'b' : {'b1' : 1, 'b2' :2}}
if args is None:
args = ['a', 'b']
return [dicts[d] for d in args]


x,y = mydef()
type(x)
>> type 'dict'

type(y)
>> type 'dict'

x = mydef(['a'])
type(x)
>> type 'list'

最佳答案

一个函数只能返回一次。您不能循环并尝试在循环的每次迭代中返回一些东西;第一个返回并结束函数。如果您想“返回多个值”,您真正需要做的是返回一个包含所有值的值,例如值列表或值元组。

此外,最好将字典放入字典中 (sup dawg) 而不是使用局部变量来命名它们。然后你就可以通过按键将它们挑出来。

这是一种返回所选字典列表的方法:

>>> def returnDicts(args=None):
... dicts = {
... 'a': {'a1':1, 'a2':2},
... 'b': {'b1':1, 'b2':2},
... 'c': {'c1':1, 'c2':2},
... 'd': {'d1':1, 'd2':2}
... }
... if args is None:
... args = ['a', 'b', 'c', 'd']
... return [dicts[d] for d in args]
>>> returnDicts()
[{'a1': 1, 'a2': 2},
{'b1': 1, 'b2': 2},
{'c1': 1, 'c2': 2},
{'d1': 1, 'd2': 2}]
>>> returnDicts(['a'])
[{'a1': 1, 'a2': 2}]
>>> returnDicts(['a', 'b'])
[{'a1': 1, 'a2': 2}, {'b1': 1, 'b2': 2}]

关于python - 根据调用参数从python函数返回多个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com