我有大数据为了可视化目的,这是dict的示例列表,
输入:
a = [{'e1': 'a','e2': 'b'}, {'e1': 'b','e2': 'a'}, {'e1': 'a','e2': 'c'} ]
输出
a = [{'e1': 'a','e2': 'b'}, {'e1': 'a','e2': 'c'}]
详情:
如果{'e1': 'a','e2': 'b'}
和{'e1': 'b','e2': 'a'}
指向彼此的值,那么我希望这是唯一的{'e1': 'a','e2': 'b'}
。
所以基本上e1是源,e2是目标。如果源和目标之间存在任何连接应该是唯一的。这里已经A连接到B然后它不应该认为B连接到A.
答案 0 :(得分:4)
>>> dup_checker, output_a = [], []
>>> for dict_element in a:
element_values = dict_element.values()
element_values.sort()
if element_values not in dup_checker:
output_a.append(dict_element)
dup_checker.append(element_values)
>>> output_a
[{'e1': 'a', 'e2': 'b'}, {'e1': 'a', 'e2': 'c'}]
对dict元素值进行排序,并创建一个dup_checker来跟踪。
答案 1 :(得分:3)
你可以试试这个
from itertools import groupby
[j.next() for i , j in groupby(a, lambda x: sorted(x.values()))
输出:
[{'e1': 'a', 'e2': 'b'}, {'e1': 'a', 'e2': 'c'}]