分组中的默认字典
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
我的代码没有给我相同的结果,因为我的断言函数不起作用。 可能是什么问题?
我尝试将 '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