gpt4 book ai didi

Python:字典的分组和聚合列表[不带计数器]

转载 作者:行者123 更新时间:2023-11-30 23:09:48 24 4
gpt4 key购买 nike

我遇到的问题与此线程中描述的完全一样:Group by and aggregate the values of a list of dictionaries in Python

给定的解决方案工作完美,但不适用于低于 Python 2.7 的任何版本,我正在努力保持与 2.6.6 的兼容性。

我的数据如下所示(从上面的链接线程中窃取):

my_dataset = [  
{
'type': 'type1',
'value1': 10
},
{
'type': 'type2',
'value2': 10
},
{
'type': 'type1,
'value1': 10
}
]

这就是我希望它返回的内容:

[
{
'type': 'type1',
'value1': 20
},
{
'type': 'type2',
'value1': 10
}
]

在不使用计数器的情况下执行此操作的最有效方法是什么?

更新

Aprillion 在下面评论并引导我访问 backport_collections,它看起来应该正是我所需要的,但我在 2.6.6 版本上仍然遇到错误。

该函数如下所示:

from backport_collections import defaultdict, Counter
def group_and_sum_dataset(dataset, group_by_key, sum_value_keys, sort_by_key):

container = defaultdict(Counter)

for item in dataset:
key = item[group_by_key]
values = {k: item[k] for k in sum_value_keys}
container[key].update(values)

new_dataset = [
dict([(group_by_key, item[0])] + item[1].items())
for item in container.items()
]
new_dataset.sort(key=lambda item: item[sort_by_key], reverse=True)

return new_dataset

当我尝试运行它时,出现语法错误:

values = {k: item[k] for k in sum_value_keys}
^
SyntaxError: invalid syntax

在 2.7 上仍然运行良好。现在不确定这是否与计数器相关。

最佳答案

您遇到的问题是您正在尝试进行字典理解,直到 python 2.7 才添加。

values = dict((k, item[k]) for k in sum_value_keys)

关于Python:字典的分组和聚合列表[不带计数器],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30975284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com