分组中的默认字典

default dict in grouping

我的代码没有给我相同的结果,因为我的断言函数不起作用。 可能是什么问题?

我尝试将 'return d' 函数向右移动一个选项卡以缩短代码可能执行的操作,并且在打印 'groups1' 和 'test_max_item' 之后,输出是相似的。但是断言功能仍然失败。


Scripts =[ { ‘a’: ‘1, ‘bnf_name’: ‘joy’, ‘items’ : 3}
{ ‘a’ :2, ‘ bnf_name’: ‘loss’, ‘ items’: 6}....]
from collections import defaultdict

def group_by_field(dictionary, grpbykey): 
    d = defaultdict(list)
    for poop in dictionary: 
        d[poop[grpbykey]].append(poop)
    return d

groups1 = group_by_field(scripts, 'bnf_name')
test_max_item = group_by_field(scripts,'bnf_name')
assert test_max_item == groups1

我预计没有断言错误。

您的代码缺乏可读性 (x100)。无论如何,也许这就是您要找的:

from collections import defaultdict


scripts = [{'a': 1, 'bnf_name': 'joy', 'items': 3}, {'a': 2, ' bnf_name': 'loss', ' items': 6}]
reverse_scripts = [{val:key for val,key in d.iteritems()} for d in scripts]


def group_by_field(dictionaries, grpbykey):
    d = defaultdict(list)
    for dictionary in dictionaries:
        if grpbykey in dictionary:
            d[grpbykey].append(dictionary[grpbykey])
    return d


groups1 = group_by_field(reverse_scripts, 'bnf_name')
test_max_item = group_by_field(reverse_scripts, 'bnf_name')
assert test_max_item == groups1