我需要制作一个函数,该函数接受n个参数,并以字典数据结构返回值。
例如:
输入:它将在列表中接受参数
list =['a','b','c']
此列表可以转到n个值。
输出:函数将值返回为
{'a':[1,2,'x'],
'b':[3,4,'y'],
'c':[5,6,'z']
}
我已经使用python 3.x进行了相同的操作,并尝试了以下代码,该代码给出了错误unhashable type: 'list'
:
def Myfunc(*args):
dir={}
for x in args:
lst=[1,2,3] # This list has static value here but in actual code,
# I am generating some dynamic value. Length of list always 3.
dir[x]=lst
z=Myfunct(['a','b','c'])
答案 0 :(得分:1)
*args
用于将可变数量的参数传递给函数。因此,如果您这样做的话
z = MyFunct('a', 'b', 'c')
然后它将按预期工作。
您实际上只传递了一个参数,因此for循环仅使用x = ['a', 'b', 'c']
进行一次评估
您应该将声明更改为:
def MyFunct(arg):
答案 1 :(得分:0)
您是要传递以下代码中的列表吗?
另外,请注意,您的函数不会返回任何内容。
我将变量的名称从dir
更改为d
,因为dir
是内置的python函数:
https://docs.python.org/3/library/functions.html?highlight=dir#dir
In [31]: def Myfunc(*args):
...: d={}
...: for x in args:
...: lst=[1,2,3] #this list has static value here but in actual code, I am generating some dynamic value. Length of list always 3.
...: d[x]=lst
...: return d
...:
In [32]: z = Myfunc(*['a','b','c'])
In [33]: z
Out[33]: {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}