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