我想要做以下事情:
- 接受任意数量的参数,可以是字典或数字
- 如果有多个字典参数,检查它们是否具有相同的键(否则会出现错误)
- 执行类似下面的操作
for key in dict:
out[key] = product(dict1[key],number2,dict2[key],etc.)
如果一个参数是一个数字,它会假装'好像'它是一个将该数字作为每个键的值的字典。(当然,这也可以是sum
而不是product
)。
理想情况下,这应该是一个库,但我可以使用手写函数。到目前为止,我还没有能够编写出适用于超过两个参数的任何东西。
例如,假设我的输入是:
a = {
'Burkina' : 100,
'Chad': 50
}
b = 2
对于两个参数,我认为这个方法可行:
def p(a,b):
out = {}
try:
for key in a:
try:
out[key] = a[key]*b[key]
except TypeError:
out[key] = a[key]*b
except TypeError:
for key in b:
try:
out[key] = a[key]*b[key]
except TypeError:
out[key] = a*b[key]
for key in out:
print(key,out[key])
但是这种方法需要一个越来越长的函数来处理更多的参数,所以这不可能是正确的。然后我尝试使用*args
进行处理:
def p(*args):
out = {}
for arg in args:
try:
for key in arg:
try:
out[key] = a[key]*b[key]
except TypeError:
out[key] = a[key]*b
except TypeError:
for key in args:
try:
out[key] = a[key]*b[key]
except TypeError:
out[key] = a*b[key]
for key in out:
print(key,out[key])
但是这样会得到TypeError,我的脑袋开始转。
添加编辑:如果所有输入都是数字,我希望返回一个数字。
谢谢!
func
被编写成始终返回字典。从func(2, 3)
返回 6 可能会在使用此函数的“客户端”上引起问题。 - sanyassh