我有一個這樣的串列:
[{'group': ['工程師', '它', '辦公室2樓', '檳城']}, {'組': ['工程師', '檳城', 'Testnew']}] 。
我想做的是把它分開,以洗掉串列中重復的專案,例如:
['Engineer', 'It', 'Office Floor 2', 'Penang', 'Testnew']]
我試著用這個代碼:
list_1 = ['Engineer', 'It', 'Office Floor 2', 'Penang']
list_2 = ['工程師', '檳城', 'Testnew']
set_1 = set(list_1)
set_2 = set(list_2)
list_2_items_not_in_list_1 = list(set_2 - set_1)
combined_list = list_1 list_2_items_not_in_list_1
print(combined_list)
雖然它起作用了,但我怎樣才能把它修改成一個動態串列?因為我的串列不是靜態的,它可能會根據用戶輸入的數量而改變。
uj5u.com熱心網友回復:
如果外觀的順序是一個約束,你可以這樣做:
lst = [{'group': ['Engineer', 'It', 'Office Floor 2', 'Penang']},{'group': ['工程師', '檳城', 'Testnew']}] 。
seen = set()
結果 = []
for d in lst:
for e in d["group"] 。
if e not in seen:
result.append(e)
seen.add(e)
print(result)
輸出
['工程師', '它', 'Office Floor 2', 'Penang', 'Testnew']
如果出現順序不是一個約束條件:
from itertools import chain
result = list(set(chain.from_iterable(d["group"] for d in lst) ) )
print(result)
輸出
['Office Floor 2', 'Penang', 'Testnew', 'It', '工程師']
或者簡單地說:
result = list(set(e for d in lst for e in d["group"] )。)
uj5u.com熱心網友回復:
它應該是這樣的 -
set_1 = list(set(list_1 list2)
uj5u.com熱心網友回復:
或者你可以這樣嘗試:
from itertools import chain
lst = [{'group': ['Engineer', 'It', 'Office Floor 2', 'Penang']},{'group': ['工程師', '檳城', 'Testnew']}] 。
list(set( chain. from_iterable(map(lambda d: d['group'], lst))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/333356.html
標籤:
