我有一个字典列表,我想删除字典具有相同的键和值对。
这个列表:[{a: 123}, {b: 123}, {a: 123}]
我想返回这个:[{'a': 123}, {'b': 123}]
另一个例子:
这个列表:[{' a ': 123, ' b ': 1234}, {' a ': 3222, ' b ': 1234}, {' a ': 123, ' b ': 1234}]
我想退回这:[{' a ': 123, ' b ': 1234}, {' a ': 3222, ' b ': 1234}]
如果你想维护骑士团,那你可以这么做
from collections import OrderedDict
print OrderedDict((frozenset(item.items()),item) for item in data).values()
# [{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}]
如果顺序不重要,那么你可以这样做
print {frozenset(item.items()):item for item in data}.values()
# [{'a': 3222, 'b': 1234}, {'a': 123, 'b': 1234}]
input_list = [{' a ': 123, ' b ': 1234}, {' a ': 3222, ' b ': 1234}, {' a ': 123, ' b ': 1234}]
#输出要求= > [{' a ': 123, ' b ': 1234}, {' a ': 3222, ' b ': 1234}]
#代码
列表= [{' a ': 123, ' b ': 1234}, {' a ': 3222, ' b ': 1234}, {' a ': 123, ' b ': 1234}]
Empty_list = []
表内项目:
if item not in empty_list:
empty_list.append(item)
打印("previous list =",list)
print("Updated list =",empty_list)
#输出
之前的列表= [{' a ': 123, ' b ': 1234}, {' a ': 3222, ' b ': 1234}, {' a ': 123, ' b ': 1234}]
更新列表= [{' a ': 123, ' b ': 1234}, {' a ': 3222, ' b ': 1234}]
最简单的方法是将列表中的每一项转换为字符串,因为字典是不可哈希的。然后可以使用set删除重复项。
list_org = [{'a': 123}, {'b': 123}, {'a': 123}]
list_org_updated = [ str(item) for item in list_org]
print(list_org_updated)
["{'a': 123}", "{'b': 123}", "{'a': 123}"]
unique_set = set(list_org_updated)
print(unique_set)
{"{'b': 123}", "{'a': 123}"}
你可以使用集合,但如果你想要一个列表,那么添加以下内容:
import ast
unique_list = [ast.literal_eval(item) for item in unique_set]
print(unique_list)
[{'b': 123}, {'a': 123}]