簡體   English   中英

查找兩個字符串列表的差異

[英]Finding the diff of two lists of strings

我試圖在兩個字符串列表之間找到一個差異(最長的公共子序列)。 我猜difflib在這里可能有用,但是difflib.ndiff-+等注釋輸出。例如

from difflib import ndiff
t1 = 'one 1\ntwo 2\nthree 3'.splitlines()
t2 = 'one 1\ntwo 29\nthree 3'.splitlines()
d = list(ndiff(t1, t2    )); print d;

['  one 1', '- two 2', '+ two 29', '?      +\n', '  three 3']

標記和刪除輸出中的字母代碼是否正確? 這是差異列表的正確Python方式嗎?

如果您想要的只是第一個列表與第二個列表的差異,則可以將它們轉換為set並使用-運算符來獲取set差異。

范例-

>>> l1 = [1,2,3,4,5]
>>> l2 = [4,5,6,7,8]
>>> print(list(set(l1) - set(l2)))
[1, 2, 3]

按列表理解:

In [16]: l1 = ['a', 'b', 'c', 'd']

In [17]: l2 = ['a', 'x', 'y', 'c']

In [18]: l1_l2 = [ii for ii in l1 if ii not in l2]

In [19]: l1_l2
Out[19]: ['b', 'd']

In [20]: l2_l1 = [ii for ii in l2 if ii not in l1]

In [21]: l2_l1 
Out[21]: ['x', 'y']

In [22]: 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM