我正在尝试创建一个列表的字典,其中键是我调用的函数(返回一个对象)的变量。然后我想创建这些对象的列表。我很难在没有繁琐代码的情况下实例化列表。有人能告诉我如何更有效地做到这一点吗?
这是我目前的代码:
def test(xlist):
ret = dict()
for x in xlist:
y = somefunction(x)
if y.variable not in ret:
ret[y.variable] = [y]
else:
ret[y.variable].append(y)
return ret
答案 0 :(得分:4)
在插入之前,您不需要进行成员资格检查,以免覆盖重复元素。您可以使用dict.setdefault或使用collections.defaultdict
而不是
if y.variable not in ret:
ret[y.variable] = [y]
else:
ret[y.variable].append(y)
将其重写为
ret.setdefault(y.variable,[]).append(y)
如果您有兴趣使用默认字典,这就是您可能想要做的事情
def test(xlist):
from collections import defaultdict
ret = defaultdict(list)
for x in xlist:
y = somefunction(x)
ret[y.variable].append(y)
return ret