如何刪除元組列表中第二個元素重複出現的元組列表中的所有事件?從元組列表中刪除所有出現的元素
我:
a = [('a',1),('b',3),('c',1),('d',1),('e',5),('f',1)]
我試圖返回
[('b',3),('e',5)]
我試圖
a = list(set(a))
但不會刪除所有事件,是有辦法做到這一點無需導入任何庫?
如何刪除元組列表中第二個元素重複出現的元組列表中的所有事件?從元組列表中刪除所有出現的元素
我:
a = [('a',1),('b',3),('c',1),('d',1),('e',5),('f',1)]
我試圖返回
[('b',3),('e',5)]
我試圖
a = list(set(a))
但不會刪除所有事件,是有辦法做到這一點無需導入任何庫?
嘗試以下操作:
a = [('a',1),('b',3),('c',1),('d',1),('e',5),('f',1)]
reduced = [y for x in a for y in x]
[x for x in a if reduced.count(x[0]) == 1 and reduced.count(x[1]) == 1]
# [('b', 3), ('e', 5)]
這拉平原來的元組列表到一個列表。然後它遍歷原始列表,併爲每個元組檢查其元素是否僅位於展平列表中一次。如果是這樣,它保持它;否則,它會丟棄它。
您也可以使用Python字典對於這一點(如果內的元組的第一要素是彼此不同):
list({k:v for k,v in dict(a).items() if list(dict(a).values()).count(v)==1}.items())
這裏的想法是你的元組的列表轉換成一個字典,並保持key-value
對count
value
部分字典的values
是1.
我希望這有助於。
嗯,怎麼樣:
def UniqueTuples(tuples):
seen, unique = set(), list()
for x, y in tuples:
if y not in seen:
seen.add(y)
unique.append((x, y))
return unique
你有,你已經嘗試過的任何代碼?這個網站是更多的代碼錯誤的幫助,而不是編寫代碼 –
剛剛編輯帖子 – Neil
我不確定你的意思是「所有第二個元素的出現」。你的例子列表中的第二個元素是'('b',3)'。 –