gpt4 book ai didi

python - 对特定对象属性对应的所有值求和的可靠方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:32:34 24 4
gpt4 key购买 nike

我有一个这样的数组。


items = [
{
"title": "title1",
"category": "category1",
"value": 200
},
{
"title": "title2",
"category": "category2",
"value": 450
},
{
"title": "title3",
"category": "category1",
"value": 100
}
]

这个数组由许多具有属性 categoryvalue 的字典组成。获取类别对象数组及其 value 总结如下的可靠方法是什么:


data= [
{
"category": "category1",
"value": 300
},
{
"category": "category2",
"value": 450
}
]

我正在寻找适用于小型阵列和大型阵列的最佳算法或方法。如果有现成的算法,请指出来源。

我试过什么??


data = []
for each item in items:
if data has a dictionary with dictionary.category == item.category:
data's dictionary.value = data's dictionary.value + item.value
else:
data.push({"category": item.category, "value":item.value})

注意:欢迎使用任何编程语言。请在投票前发表评论。

最佳答案

在 javascript 中,您可以使用 reduce 将数组分组为一个对象。使用类别作为属性。使用 Object.values 将对象转换为数组。

var items = [{
"title": "title1",
"category": "category1",
"value": 200
},
{
"title": "title2",
"category": "category2",
"value": 450
},
{
"title": "title3",
"category": "category1",
"value": 100
}
];

var data = Object.values(items.reduce((c, v) => {
c[v.category] = c[v.category] || {category: v.category,value: 0};
c[v.category].value += v.value;
return c;
}, {}));

console.log(data);

关于python - 对特定对象属性对应的所有值求和的可靠方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52679844/

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