您可以使用next
和enumerate
:
>>> list1 = [(12, "AB", "CD"), (13, "EF", "GH"), (14, "IJ", "KL")]
>>> next(i for i,x in enumerate(list1) if 13 in x)
1
用一個簡單的for循環:
for i, item in enumerate(list1):
if 13 in item:
print i
break
...
1
更新:
如果每個元組的第一個項目是獨一無二的,你多次這樣做,然後首先創建一個字典。類型的字典提供O(1)
查找,同時列出O(N)
>>> list1 = [(12, "AB", "CD"), (13, "EF", "GH"), (14, "IJ", "KL")]
>>> dic = {x[0]:x[1:] for x in list1}
訪問項目:
>>> dic[12]
('AB', 'CD')
>>> dic[14]
('IJ', 'KL')
#checking key existence
>>> if 17 in dic: #if a key exists in dic then do something
#then do something
你可能會考慮粘貼確切引發的異常不是描述它。這是最清晰和最清潔的方式。話雖如此,你的問題不是在if語句,而是在if語句塊中。 – woozyking
您正在接收錯誤,因爲13不在'list1'中。它在'list1 [1]'中。 – bogatron
@bogatron 13不在'list1 [0]'中,它在'list1 [1]'中。 –