数据附加在字典中

时间:2019-04-14 17:21:14

标签: python-3.x

我需要制作一个函数,该函数接受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'])

2 个答案:

答案 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]}