当前,我从一个空数组from collections import defaultdict
def length_counts(countries):
result = defaultdict(int)
for country in countries:
result[len(country)] += 1
return result
开始。然后,我遍历>>> length_counts(sa_countries)
defaultdict(<class 'int'>, {6: 1, 9: 2, 7: 2, 4: 1})
和reportSections
的值,并将唯一值添加到我的date group
数组中。
record date
这是一个小例子,我将循环遍历reportSections
变量中的数据:
let reportSections = [];
let dataGroups = new Set();
let recordDates = new Set();
data.forEach(item => {
dataGroups.add(item['date group']);
recordDates.add(item['record date']);
});
for (const [index, value] of [...dataGroups].entries())
reportSections.push({
id: value,
name: [...recordDates][index]
});
但是,现在我需要做一些与代码的其他三个部分非常相似的事情,但是设置有点不同,因为需要将值添加到objets而不是数组中,因此不能使用push()方法。这是当前代码的样子:
data
通常我已经对此进行了硬编码,但是由于我将处理动态日期,并且在给定的月份中可能会有不同的星期数,因此我需要在末端进行动态处理。 我的问题是,如何像我对{{1 }}数组?
旁注:
[
{
'record date': '2020-04-01',
'date group': 'MONTH START'
},
{
'record date': '2020-04-01',
'date group': 'MONTH START'
},
{
'record date': '2020-04-05',
'date group': 'MONTH TO DATE - Week 1'
},
{
'record date': '2020-04-05',
'date group': 'MONTH TO DATE - Week 1'
}
]
和let filteredData = {
monthstart: _.filter(data, {'date group': 'MONTH START'}),
monthstart_week1: _.filter(data, {'date group': 'MONTH TO DATE - Week 1'}),
monthstart_week2: _.filter(data, {'date group': 'MONTH TO DATE - Week 2'}),
};
let combinedData = {
monthstart: [],
monthstart_week1: [],
monthstart_week2: [],
};
let reportMap = {
monthstart: {},
monthstart_week1: {},
monthstart_week2: {},
};
中的空数组和对象将保持原样,仅更改实际名称(即date group
将动态更改,但是filteredData
或combinedData
不会。使用reportMap
时,名称也会更改(即reportSections
),并且我还需要combinedData
中的相同值才能在{{ 1}}部分。
我希望我能够足够清楚地解释这一点。如果需要更多说明,请告诉我,我可以为问题添加更多详细信息,但我们将不胜感激。谢谢!
答案 0 :(得分:1)
如果我理解您的问题,则想向对象动态添加新的键值对。
您可以这样做:
const myObject = {};
// loop start
myObject["myDynamicKey"] = "myDynamicValue";
// loop end
或类似的方式,使用传播运算符:
let myObject = {};
// loop start
myObject = {...myObject, ["myDynamicKey"]: "myDynamicValue"}
// loop end