从python中的函数返回数字字典

时间:2012-01-11 14:42:11

标签: python dictionary hashtable

我想通过将列表的每个值分配给“喜欢”来返回元素字典,但我一直想出错误。这是我的代码。

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

4 个答案:

答案 0 :(得分:5)

dict.fromkeys是一个方便的构造函数:

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

答案 1 :(得分: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}

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

在代码的更新版本中,删除了其他错误。 d的初始化仍然很奇怪,因为使用空字典就足够了:

d = {}

答案 2 :(得分:1)

在Python 2.7以上,你可以做一个词典理解:

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

编辑:看起来@SvenMarnach在我打字时编辑了他的评论。

答案 3 :(得分: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'}