这个Python函数究竟做了什么?

时间:2015-11-27 02:28:39

标签: python

我无法理解这种方法的目的是什么(取自Python Brain Teaser Question bank)。我发现输入似乎是字典的集合。但是,尝试做的方法是什么?

def g(items):
    d = defaultdict(list)
    for i in items:
        d[i['type']].append(i)
    return d

2 个答案:

答案 0 :(得分:2)

它收集了一大堆可以按字符串索引的项目,并按"type"键的值对它们进行分组。结果是一个字典,其中键是"type"的值,该值是具有所述键作为其"type"的所有项的列表。

它似乎确实有点破碎,因为它正在返回功能。我认为预期的行为是在最后有return d。通过以下实现:

def g(items):
    d = defaultdict(list)
    for i in items:
        d[i['type']].append(i)
    return d # Fixed this

您提供以下输入:

items = [ 
    {'type': 'foo', 'val': 1}, 
    {'type': 'bar', 'val': 2}, 
    {'type': 'foo', 'val': 3}
]

你得到以下输出:

{'foo': [{'type': 'foo', 'val': 1}, {'type': 'foo', 'val': 3}], 'bar': [{'type': 'bar', 'val': 2}]}

答案 1 :(得分:1)

输入是sequence mappings,每个都有一个“类型”条目。代码bins每个都按其“类型”条目的值进行映射。

返回g代替d可能只是一个思考。