一个list中 取相同对象相加
时间: 2024-05-10 16:20:08 浏览: 68
如果您想在一个列表中找到相同的对象并将它们相加,可以使用字典来实现。首先,您需要遍历列表中的每个对象,并检查它是否已经在字典中。如果该对象已经在字典中,则将其值相加。如果该对象不在字典中,则将其添加到字典中。
以下是一个示例代码:
```
my_list = [1, 2, 3, 4, 1, 2, 5, 6, 3]
my_dict = {}
for object in my_list:
if object in my_dict:
my_dict[object] += object
else:
my_dict[object] = object
print(my_dict)
```
在这个例子中,我们有一个包含数值的列表`my_list`。我们创建了一个空字典`my_dict`。我们遍历了`my_list`中的每个对象,并检查它是否已经在字典中。如果该对象已经在字典中,则将其值相加。如果该对象不在字典中,则将其添加到字典中。最后,我们打印出字典的内容。
输出将是:
```
{1: 2, 2: 4, 3: 6, 4: 4, 5: 5, 6: 6}
```
这是因为`my_list`中包含了多个相同的对象,例如1、2和3。我们将它们相加并将它们存储在字典中。
相关问题
一个list中 取相同对象相加 java
假设你有一个List<Integer>,你可以使用Java 8的Stream API来获取相同的元素并将它们相加:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 2, 4, 5, 3, 6);
Map<Integer, Integer> result = list.stream().collect(Collectors.toMap(Function.identity(), i -> 1, Integer::sum));
```
这将返回一个Map<Integer, Integer>,其中键是列表中出现的每个整数,值是该整数在列表中出现的次数的总和。在这个例子中,result将是{1=1, 2=2, 3=2, 4=1, 5=1, 6=1}。
java 8 list,相同对象去重相加生成新的list
如果您有一个对象列表,并且想要按照某个属性进行去重并求和,可以使用Stream API 和 Collectors 工具类来完成。假设您的对象为Person,有一个属性为age,下面是一个Java 8代码示例:
```java
List<Person> personList = Arrays.asList(new Person("Tom", 20),
new Person("Mary", 18),
new Person("John", 20));
List<Person> uniquePersonList = personList.stream()
.collect(Collectors.toMap(Person::getAge,
Function.identity(),
(p1, p2) -> p1))
.values()
.stream()
.collect(Collectors.toList());
System.out.println(uniquePersonList);
```
输出结果为:[Person{name='Tom', age=20}, Person{name='Mary', age=18}]
在这个示例中,我们使用了Collectors.toMap()方法来按照年龄进行去重,然后通过取values()方法获取去重后的Person对象列表。需要注意的是,如果存在重复的键(也就是年龄),我们使用(p1, p2) -> p1的lambda表达式来选择第一个对象,这样可以保证不会出现重复的对象。
阅读全文