2017-01-23 144 views
-3

我是python的新手,我正在努力尋找解決問題的更好方法。如何檢查所有元組是否在Python列表中具有特定值

我有一個列表如下圖所示:

[(1048, u'3', u'1',), (1048, u'03', u'00','Deleted'), (1048, u'4', u'0', 'Deleted')] 

在每個元組,最後歸結可以「刪除」或「無」。我需要檢查所有的元組是否在最後的地方被刪除。

如何做到這一點。

我試圖做的列表理解(https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

object_with_specific_attribute = [dataObj for dataObj in data if "Deleted" in dataObj[3]] 

,但它似乎並沒有在空數據的情況下進行工作。

任何人都可以請幫忙嗎?

在此先感謝。

+3

如何檢查每個元組-1位置,並檢查是否被刪除或不 – Shashank

+0

沙善,而不是表明在註釋部分解決,請提出一個完整的答案,答案不是。 – Exelian

+2

目前還不清楚最後一個項目是否可以是None(如None值)或從元組中缺失(根本沒有值)。 –

回答

3
all(item[-1] == "Deleted" for item in items) 

這應返回True如果它們都含有「已刪除」

而且所有的元組需要有至少4個元素。如果沒有,你會得到一個索引錯誤

編輯:由於它矗立在評論這是更好地去與item[-1],你說:「最後一個元素」

+3

OP表示*最後一項*,所以如果某些元組出於某種原因有更多或更少的元素,那麼使用索引'[-1]'可能會更好。 –

+0

我認爲通過「無」,OP意味着第四個元素不存在。 '(1048,u'3',u'1',)[ - 1]'是'1'所以這個解決方案不能處理這個@ Ev.Kounis –

+0

@Chris_Rands True,但我仍然認爲它比'[3 ]'。必須單獨檢查缺席或第四個值。其他一些解決方案也檢查長度。 OP對於元組可能或不可能看起來像什麼都不是很清楚。 –

4
all(len(tup) == 3 or tup[-1] in [None, "Deleted"] for tup in data) 

從你的例子是可推斷一些元組沒有第4項,所以我添加了len檢查。

+0

明白了!謝謝 – Lovey

0

下面的行會工作。

object_with_specific_attribute = [tup for tup in data if tup[-1] == 'Deleted'] 
相關問題