两个相同list对象,根据id一致将数据合并
时间: 2024-03-08 19:51:08 浏览: 40
如果你想要合并两个相同的列表对象,可以根据其id属性来判断是否是同一个对象,然后将它们合并成一个新的列表。下面是一种实现方式:
```python
class Item:
def __init__(self, id, name):
self.id = id
self.name = name
def __str__(self):
return f"Item(id={self.id}, name={self.name})"
def merge_lists(list1, list2):
merged_items = {}
for item in list1 + list2:
if item.id not in merged_items:
merged_items[item.id] = item
else:
merged_items[item.id].name += f", {item.name}"
return list(merged_items.values())
# Example usage
list1 = [Item(1, "item1"), Item(2, "item2"), Item(3, "item3")]
list2 = [Item(2, "item2"), Item(3, "item3"), Item(4, "item4")]
merged_list = merge_lists(list1, list2)
print(merged_list)
```
在上面的代码中,我们首先定义了一个`Item`类,它包含一个`id`和`name`属性。然后,我们定义了一个`merge_lists`函数,它接收两个列表作为参数,并返回一个合并后的列表。我们使用一个字典`merged_items`来保存合并后的数据,根据每个`Item`对象的`id`属性来判断是否是同一个对象。如果是同一个对象,我们就将它们的`name`属性合并起来,用逗号分隔。最后,我们将字典中的值转换为列表并返回。
在上面的例子中,我们将`list1`和`list2`合并起来,并输出结果:
```
[Item(id=1, name=item1), Item(id=2, name=item2, item2), Item(id=3, name=item3, item3), Item(id=4, name=item4)]
```
从输出结果可以看出,我们成功地将`list1`和`list2`合并成了一个新的列表,并根据`id`属性将数据去重合并。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)