dict独特组合Python列表

时间:2017-04-07 05:48:22

标签: python python-2.7 python-3.x

我有大数据为了可视化目的,这是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.

2 个答案:

答案 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'}]