2012-01-11 86 views
-3

我想通过将列表的每个值赋给“like”来返回一个元素字典,但我一直想出错。这是我的代码。返回python中函数的数字字典

def f([a,b,c]): 
    d={a:'like'} 
    for x in [a,b,c]: 
     d[x]='like' 
    return d 
+1

“错误“ - 想更具体? – 2012-01-11 14:43:44

+0

我想我可能知道这个问题,有没有办法将列表转换为元组? – user1111042 2012-01-11 14:43:59

+2

您的代码有多个错误,包括语法错误和逻辑错误。什么特别的错误信息给你? – 2012-01-11 14:44:27

回答

4

我的猜测是,这是你想要做什么:

def f(my_list): 
    return dict((x, "like") for x in my_list) 

例子:

>>> f([1, 2, 3]) 
{1: 'like', 2: 'like', 3: 'like'} 

在Python 2.7或以上,该功能也可以写成

def f(my_list): 
    return {x: "like" for x in my_list} 

关于你的ori ginal code:没有这样的语法def f([a, b, c])。我只能猜测这是什么意思,参数列表中没有方括号。如果您想传入列表,请使用单个参数。

在代码的更新版本中,其他错误已被删除。的d初始化仍然是陌生的,因为这将是足够用了一个空的字典:

d = {} 
5

dict.fromkeys是这样的便捷构造:

>>> dict.fromkeys([1,2,3], 'like') 
{1: 'like', 2: 'like', 3: 'like'} 
1

以上的Python 2.7,你可以做一个字典的理解:

>>> my_list = [1, 2, 3,] 
>>> {i: 'like' for i in my_list} 
{1: 'like', 2: 'like', 3: 'like'} 

编辑:看起来像@SvenMarnach编辑他的评论,因为我正在打字。

0

我不知道什么是你想这样做,但它也许是这样的:

def f(lst): 
    d = {} 
    for x in lst: 
     d[x] = 'like' 
    return d 

,如果它是你可以做的或更好:

>>> lst = ['a', 'b', 'c'] 
>>> dict((x, 'like') for x in lst) 
{'a': 'like', 'b': 'like', 'c': 'like'}