list快速分组求和代码
时间: 2023-08-17 11:05:19 浏览: 90
可以使用Python的collections模块中的defaultdict来快速分组,并使用内置函数sum来求和。
例如,假设我们有一个包含数字的列表,要将它们按照奇偶性分组并求和,可以这样做:
```python
from collections import defaultdict
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用defaultdict来创建一个空的字典,键为奇偶性,值为对应数字的列表
groups = defaultdict(list)
for num in numbers:
key = 'even' if num % 2 == 0 else 'odd'
groups[key].append(num)
# 对每个键对应的列表中的数字求和,并将结果存储在一个新的字典中
sums = {key: sum(values) for key, values in groups.items()}
print(sums) # 输出: {'odd': 25, 'even': 30}
```
上述代码将输入列表中的数字按照奇偶性进行了分组,并对每个组内的数字进行了求和,最终输出了一个包含每个组的和的字典。
相关问题
java中list快速分组求和代码
Java中可以使用Java 8中的Stream API来实现list快速分组求和。
例如,假设我们有一个包含数字的列表,要将它们按照奇偶性分组并求和,可以这样做:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 使用stream()方法将列表转换为Stream对象,并使用Collectors.groupingBy()方法对数字进行分组
Map<String, Integer> sums = numbers.stream()
.collect(Collectors.groupingBy(
num -> num % 2 == 0 ? "even" : "odd", // 按照奇偶性进行分组
Collectors.summingInt(num -> num) // 对每组中的数字求和
));
System.out.println(sums); // 输出: {odd=25, even=30}
}
}
```
上述代码将输入列表中的数字按照奇偶性进行了分组,并对每个组内的数字进行了求和,最终输出了一个包含每个组的和的Map对象。
list集合分组求和
以下是使用Java 8的Stream API对list集合进行分组求和的示例代码:
```java
Map<String, Integer> sumByCity = cities.stream()
.collect(Collectors.groupingBy(City::getCity, Collectors.summingInt(City::getPopulation)));
```
上述代码中,我们首先使用`groupingBy`方法按照城市名称对城市进行分组,然后使用`summingInt`方法对每个分组中的城市人口数进行求和。最终,我们得到了一个`Map`对象,其中键为城市名称,值为该城市的总人口数。
阅读全文