
python 如何把dict里的数据按照a='x'的形式传给一个方法 10
比如我有一个方法如下deftest(a,b):printa,b现在有一个dict{'a':'1','b':'2'}我想把这个dict的key当成test方法的参数名,va...
比如我有一个方法如下
def test(a, b):
print a,b
现在有一个dict{'a': '1', 'b':'2'}
我想把这个dict的key当成test方法的参数名,value当成对应的值传进来,这个该怎么做呢?
类似这样调用 test(a='1', b='2')
PS:我之前是想把dict里的key取出来,然后传给test方法。 但是key取出来的是个string,怎么取出来变成这个test的参数名呢? 求大神指导! 展开
def test(a, b):
print a,b
现在有一个dict{'a': '1', 'b':'2'}
我想把这个dict的key当成test方法的参数名,value当成对应的值传进来,这个该怎么做呢?
类似这样调用 test(a='1', b='2')
PS:我之前是想把dict里的key取出来,然后传给test方法。 但是key取出来的是个string,怎么取出来变成这个test的参数名呢? 求大神指导! 展开
5个回答
展开全部
解包裹可以实现这一功能。解包裹在传递字典dict时,让字典的每个键值对作为一个关键字传递给func。为了提醒Python,参数dict是包裹关键字传递所用的字典,在dict前加**。
def func(a,b,c):
print a,b,c
dict = {'a':1,'b':2,'c':3}
func(**dict)
与字典解包裹类似,元组也可以解包裹。就是在传递tuple时,让tuple的每一个元素对应一个位置参数。在调用func时使用*,是为了提醒Python:我想要把args拆成分散的三个元素,分别传递给a,b,c。
args = (1,3,4)
func(*args)
def func(a,b,c):
print a,b,c
dict = {'a':1,'b':2,'c':3}
func(**dict)
与字典解包裹类似,元组也可以解包裹。就是在传递tuple时,让tuple的每一个元素对应一个位置参数。在调用func时使用*,是为了提醒Python:我想要把args拆成分散的三个元素,分别传递给a,b,c。
args = (1,3,4)
func(*args)
2015-04-07
展开全部
python的函数可以直接这样定义
def func(**dict)
但是好像和你的是反的,他是传入key-value对,进去就成字典了.
你这个好像基本不可能,因为参数变量名本身不能是变量引用,放个字符串变量引用在哪儿,会报错。
def func(**dict)
但是好像和你的是反的,他是传入key-value对,进去就成字典了.
你这个好像基本不可能,因为参数变量名本身不能是变量引用,放个字符串变量引用在哪儿,会报错。
追问
好像是不行,目前我只能在准备dict的时候变成一个有序的dict, 然后把dict里的value取成一个list(当然这个list也是有序的)调用的时候变成test1(*list).这样比较死板,dict顺序需要是固定的。。哎
追答
如果list符合你的要求,其实也可以直接传字典。带key的比不带key的更靠谱。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以参考Python中的“关键字参数“。关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict.
def test(**kw):
print kw
>>>kw={'a:',a,'b:',b}
>>>test(a=kw['a'],b=kw['b'])
{'a0': '1', 'b0': '2'}
追问
我这样调用test(a='1', b='2')就是用关键字取传值的把,针对这个问题,关键字就是对应的dict里的key。 但是key取出来的不都是string么?还请不吝赐教。。
追答
对啊。我想这个在参数传入之后就应该可以按照你的需求进行处理了。这个具体的细节在百度里搜索”python 关键字参数“会有很多详细的资料。希望对你有帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
def test(dict):
for i in dict.values():
print i
dict={'a': '1', 'b':'2'}
test(dict)
你是想要这样的效果吗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
>>> def test(dict,*arg):
for value in arg:
print dict[value]
>>> test(dict,'a','b')
1
2
你要的是不是这个效果?
for value in arg:
print dict[value]
>>> test(dict,'a','b')
1
2
你要的是不是这个效果?
追问
还不是这个效果。目前我是有很多个方法,比如test1(a, b) test2(a,b,c) , 我会在其他地调用这些test1、test2. 调之前会先准备dict,确保这个dict的key对应方法里的参数名。 现在要把dict解析一下传给test1 和test2,类似test1(a='1', b='2') 。我取出kye是string就变成了test1('a=1','b=2')
追答
你直接把dict传进去,把你需要的key都传到arg里面,在通过关键字就能获取到dict中的值了啊。arg里的参数也就和你的key是同名的了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |