3
我有两个列表,每个列表包含两个元素列表。如何获得两个元素子列表中的两个列表之间的对称差异?
a = [['Adolf', '10'], ['Hermann', '20'], ['Heinrich', '30'], ['Heinrich', '15']]
b = [['Rudolf', '40'], ['Adolf', '50']]
我想根据子列表的'键'的第一个元素得到两个列表的“对称差异”。
这种“对称差”是以下几点:
c = [['Hermann', '20'], ['Heinrich', '30'], ['Heinrich', '15'], ['Rudolf', '40']]
所以,“阿道夫”条目已被删除,因为他们在这两个列表中存在,而其他人,包括了“ Rudolf'的参赛作品已被列入,因为它们不在这两份名单中。
另一个例子是以下几点:
a = [['Adolf', '10'], ['Hermann', '20'], ['Heinrich', '30'], ['Heinrich', '15']]
b = [['Heinrich', '25']]
c = [['Adolf', '10'], ['Hermann', '20']]
我觉得这一定是通过一些巧妙的列表内涵可以实现的,但我不太知道如何处理它。
c = [x for x in a_pairs if x not in b_pairs]
这是伟大的。非常感谢您的帮助。我没有意识到集合的漂亮功能! – d3pd 2014-12-07 02:11:24
正如一个侧面说明,'symmetric_difference()'也是[set method](https://docs.python.org/3/library/stdtypes.html?highlight=set#set.symmetric_difference)。如果设置了a和b,对称差可以通过a.symmetric_difference(b)或b.symmetric_difference(a)来返回。 – dagrha 2016-02-02 06:03:32