如何将变量值作为关键字参数键传递?
How to pass a variable value as keyword argument key?
我需要将变量的值作为关键字参数的键传递。
def success_response(msg=None,**kwargs):
output = {"status": 'success',
"message": msg if msg else 'Success Msg'}
for key,value in kwargs.items():
output.update({key:value})
return output
the_key = 'purchase'
the_value = [
{"id": 1,"name":"Product1"},
{"id": 2,"name":"Product2"}
]
success_response(the_key=the_value)
实际输出为
{'status': 'success', 'message': 'Success Msg', 'the_key': [{'id': 1, 'name': 'Product1'}, {'id': 2, 'name': 'Product2'}]}
预期输出是
{'status': 'success', 'message': 'Success Msg', 'purchase': [{'id': 1, 'name': 'Product1'}, {'id': 2, 'name': 'Product2'}]}
我试过了eval()
success_response(eval(the_key)=the_value)
但是得到了异常
SyntaxError: keyword can't be an expression
使用:
success_response(**{the_key: the_value})
而不是:
success_response(the_key=the_value)
这一行的key
:
for key,value in kwargs.items():
是关键字参数的名称。在这种情况下,key
将是 the_key
,这意味着传递给 output.update(value)
的字典 value
将是
[
{"id": 1,"name":"Product1"},
{"id": 2,"name":"Product2"}
]
我想你真正想要的是:
success_response(purchase=the_value)
我需要将变量的值作为关键字参数的键传递。
def success_response(msg=None,**kwargs):
output = {"status": 'success',
"message": msg if msg else 'Success Msg'}
for key,value in kwargs.items():
output.update({key:value})
return output
the_key = 'purchase'
the_value = [
{"id": 1,"name":"Product1"},
{"id": 2,"name":"Product2"}
]
success_response(the_key=the_value)
实际输出为
{'status': 'success', 'message': 'Success Msg', 'the_key': [{'id': 1, 'name': 'Product1'}, {'id': 2, 'name': 'Product2'}]}
预期输出是
{'status': 'success', 'message': 'Success Msg', 'purchase': [{'id': 1, 'name': 'Product1'}, {'id': 2, 'name': 'Product2'}]}
我试过了eval()
success_response(eval(the_key)=the_value)
但是得到了异常
SyntaxError: keyword can't be an expression
使用:
success_response(**{the_key: the_value})
而不是:
success_response(the_key=the_value)
这一行的key
:
for key,value in kwargs.items():
是关键字参数的名称。在这种情况下,key
将是 the_key
,这意味着传递给 output.update(value)
的字典 value
将是
[
{"id": 1,"name":"Product1"},
{"id": 2,"name":"Product2"}
]
我想你真正想要的是:
success_response(purchase=the_value)