对python列表里的字典元素去重方法详解

  • Post category:Python

我来详细讲解下“对python列表里的字典元素去重方法详解”的完整攻略。

1. 概述

在Python编程中,经常需要使用集合去重的操作,而在字典嵌套列表的情况下,要对集合(列表)内的字典元素进行去重,需要使用稍微复杂的方式。以下介绍3种去重方法,分别为使用字典键值对去重,使用set去重和使用pandas去重。

2. 字典键值对去重

代码示例:

l1 = [{"name": "apple", "price": 5}, {"name": "banana", "price": 3}, 
      {"name": "apple", "price": 5}, {"name": "pear", "price": 4}]
l2 = []
for i in l1:
    if i not in l2:
        l2.append(i)
print(l2)

输出结果为:

[{'name': 'apple', 'price': 5}, {'name': 'banana', 'price': 3}, {'name': 'pear', 'price': 4}]

3. 使用set去重

代码示例:

l1 = [{"name": "apple", "price": 5}, {"name": "banana", "price": 3}, 
      {"name": "apple", "price": 5}, {"name": "pear", "price": 4}]
l2 = []
for i in l1:
    l2.append(frozenset(i.items()))
l3 = list(set(l2))
l4 = []
for i in l3:
    d = dict(i)
    l4.append(d)
print(l4)

输出结果为:

[{'name': 'pear', 'price': 4}, {'name': 'banana', 'price': 3}, {'name': 'apple', 'price': 5}]

4. 使用pandas去重

代码示例:

import pandas as pd
l1 = [{"name": "apple", "price": 5}, {"name": "banana", "price": 3}, 
      {"name": "apple", "price": 5}, {"name": "pear", "price": 4}]
df = pd.DataFrame(l1)
df.drop_duplicates(inplace=True)
print(df.to_dict('records'))

输出结果为:

[{'name': 'apple', 'price': 5}, {'name': 'banana', 'price': 3}, {'name': 'pear', 'price': 4}]

5. 总结

以上就是对python列表里的字典元素去重方法详解的介绍,我们可以看到,这三种方法各有优缺点,需要根据实际情况选择合适的方法。其中,使用pandas去重的方法简单且高效,但需要安装pandas库。同时,我们也可以使用其他的python库来进行去重的操作。