我有一個元組列表,例如:Python:通過元組列表搜索
>>> l = [ ("a",1), ("b",2), ("c",3) ]
,我可以假設元素是唯一的。現在我想獲得該元組的第一個元素,它的第二個元素是2
(在本例中爲'b'
)。第一次嘗試是:
>>> [ x for x, y in l if y == 2 ][0]
'b'
這似乎有點麻煩,因爲這會創建第二個列表僅索引第0個元素。這樣做的另一種方式是反向的所有元組在給定列表l
和構建一個字典,然後索引詞典:
>>> dict([ (y, x) for x, y in l ])[2]
'b'
這似乎更尷尬的考慮數據量洗牌參與扭轉名單,並且創造一本字典。最後,最冗長,但或許是最快的方式做,這是簡單地在列表遍歷:
>>> def get(l) :
... for x, y in l :
... if y == 2 :
... return x
... assert not "Should not happen."
...
>>> get(l)
'b'
我的問題是:是否有通過這個列表裏尋找更好和更Python的方法呢?
噢......所以這與上次嘗試更加一致,get()函數也停止了找到的元素。 – Jens 2015-04-03 02:39:06
@Jens是的,它們是等效的 – 2015-04-03 02:47:51