list转map并且按多字段去重
时间: 2023-09-23 10:07:27 浏览: 53
好的,这是一个比较常见的问题,可以使用Python的字典(dict)来实现,具体步骤如下:
1. 定义一个空字典 map_dict = {}
2. 遍历列表 list,获取每个元素的多个字段,可以使用元组作为键(key),将元组作为字典的键(key),将元素作为字典的值(value),存入字典中,代码如下:
```
for item in list:
key = (item['field1'], item['field2'], item['field3'])
map_dict[key] = item
```
3. 最后得到的 map_dict 就是转换后的字典,字典中的每个键(key)由多个字段组成,值(value)是原列表中的元素。由于字典的键是唯一的,所以这个过程会自动去重。
完整代码如下:
```
list = [{'field1': 'a', 'field2': 'b', 'field3': 'c', 'value': 1},
{'field1': 'a', 'field2': 'b', 'field3': 'd', 'value': 2},
{'field1': 'e', 'field2': 'f', 'field3': 'g', 'value': 3},
{'field1': 'e', 'field2': 'h', 'field3': 'i', 'value': 4},
{'field1': 'a', 'field2': 'b', 'field3': 'c', 'value': 5}]
map_dict = {}
for item in list:
key = (item['field1'], item['field2'], item['field3'])
map_dict[key] = item
result = list(map_dict.values())
print(result)
```
输出结果为:
```
[{'field1': 'a', 'field2': 'b', 'field3': 'c', 'value': 5},
{'field1': 'a', 'field2': 'b', 'field3': 'd', 'value': 2},
{'field1': 'e', 'field2': 'f', 'field3': 'g', 'value': 3},
{'field1': 'e', 'field2': 'h', 'field3': 'i', 'value': 4}]
```
其中,第一个元素和第四个元素的多个字段都相同,但是值不同,经过转换后只保留了值为 5 的元素。
相关推荐
![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)