我想通过将列表的每个值分配给“喜欢”来返回元素字典,但我一直想出错误。这是我的代码。
def f([a,b,c]):
d={a:'like'}
for x in [a,b,c]:
d[x]='like'
return d
答案 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'}