如何在Python中尽可能少地编写列表的字典?

时间:2015-04-28 15:16:13

标签: python list dictionary

我正在尝试创建一个列表的字典,其中键是我调用的函数(返回一个对象)的变量。然后我想创建这些对象的列表。我很难在没有繁琐代码的情况下实例化列表。有人能告诉我如何更有效地做到这一点吗?

这是我目前的代码:

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

1 个答案:

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