如何消除列表中的重复键值对

时间:2016-08-29 12:22:13

标签: python

[
    {'date': '08/11/2016', 'duration': 13.0}, 
    {'date': '08/17/2016', 'duration': 5.0}, 
    {'date': '08/01/2016', 'duration': 5.2}, 
    {'date': '08/11/2016', 'duration': 13.0}, 
    {'date': '08/11/2016', 'duration': 13.0}, 
    {'date': '08/11/2016', 'duration': 13.0}
]

如果数据是这样的。

2 个答案:

答案 0 :(得分:2)

一个简单但不是真正有效的解决方案可以是:

a = [{'date': '08/11/2016', 'duration': 13.0}, {'date': '08/17/2016', 'duration': 5.0}, {'date': '08/01/2016', 'duration': 5.2}, {'date': '08/11/2016', 'duration': 13.0}, {'date': '08/11/2016', 'duration': 13.0}, {'date': '08/11/2016', 'duration': 13.0}]
b = []
for c in a:
   if c in b:
      continue
   b.append(c)
print(b)

答案 1 :(得分:0)

一种方法是使用FrozenDict。通过使用此功能,您可以在dict上执行类似操作的设置。但这不是默认的python包。

或者,从列表中输入新列表并在输入新值之前进行检查。以下是示例代码:

my_list = [{'date': '08/11/2016', 'duration': 13.0}, {'date': '08/17/2016', 'duration': 5.0}, {'date': '08/01/2016', 'duration': 5.2}, {'date': '08/11/2016', 'duration': 13.0}, {'date': '08/11/2016', 'duration': 13.0}, {'date': '08/11/2016', 'duration': 13.0}]

new_list = []
for item in my_list:
    if item not in new_list:
        new_list.append(item)

# new_list = [{'date': '08/11/2016', 'duration': 13.0}, {'date': '08/17/2016', 'duration': 5.0}, {'date': '08/01/2016', 'duration': 5.2}]