我有這個串列:
result = [['A', 100], ['A', 200], ['A', 300], ['A', 100, 'WERKS'], [A, 200, 'MATNR'], [A, 300, 'RESNR']]
我一直在嘗試洗掉與其他人重復的串列。因此,[A, 100] 是 [A, 100, WERKS] 的一個小副本。因此 [A,100] 將被洗掉。如果該串列可以在另一個串列中找到,它將被洗掉。有沒有辦法在python中做到這一點?
新串列應該是:
result2 = [['A',100, 'WERKS'], ['A', 200, 'MATNR'], [A, 300, 'RESNR']]
uj5u.com熱心網友回復:
您可以使用集合比較和串列理解來實作這一點。如果任何轉換為?? set 的子串列是另一個的嚴格子集,則不要保留它。
sets = list(map(set, result))
out = [l for l in result if not any(set(l)<s for s in sets)]
請注意,最糟糕的復雜度是 O(n**2)!
輸出:
[['A', 100, 'WERKS'], ['A', 200, 'MATNR'], ['A', 300, 'RESNR']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/493439.html
上一篇:該用戶帳戶所有者的權限
