2015-11-23 74 views
0

我有一個數組創建的元組:從陣列上,如果條件蟒蛇

['Booking.com', '$109', 'Hotels.com', '$109', 'Priceline', '$109', 
'Travelocity', '$109', 'eDreams', '$109', 'Hoteling', 'Otel.com'] 

我希望把它做成元組使找到最低的價格更容易。然而,有時候沒有與它前面的字段相關的價格(Hoteling,Otel.com),所以我想在我的元組創建中忽略它。

最終想要的結果:

[("Booking.com", "$109"), ("Hotels.com", "$109"), ("Priceline", "$109"), etc.. 
last element should be eDreams)] 

我知道我能做到這一點創建一個while循環和循環在它和檢查索引之後,看看是否有一個「$」,但我希望的是更pythonic的方式?

+1

爲什麼不使用字典? – n1c9

+0

嗯,我從未想過,好主意。我可以使用deafultdict(列表)嗎? –

+0

如果你想找到最低價格堆也將是適當的。 – simonzack

回答

1

我覺得這裏的字典會更「Python化」,但你可以用一個列表理解到你想要做什麼用,你有名單:

In [4]: [(a[i], a[i+1]) for i in range(0,len(a)-1,2) if a[i+1].startswith('$')] 
Out[4]: 
[('Booking.com', '$109'), 
('Hotels.com', '$109'), 
('Priceline', '$109'), 
('Travelocity', '$109'), 
('eDreams', '$109')] 

爲了得到一本字典,你既可以將你的元組列表傳遞給dict()或使用:

In [4]: {a[i]:a[i+1] for i in range(0,len(a)-1,2) if a[i+1].startswith('$')} 
Out[4]: 
{'Booking.com': '$109', 
'Hotels.com': '$109', 
'Priceline': '$109', 
'Travelocity': '$109', 
'eDreams': '$109'} 
+1

你也可以用'{a [i]:a [i + 1] ....}來做一個詞典理解。'' –

+0

@Rar是的,這可能也會更快。 – xnx

+0

愚蠢的問題,我必須初始化一本字典,我試着:{比較[i]:比較[i + 1]我在範圍內(0,len(比較),2)如果比較[i + 1]。 startswith('$')}和我得到全球名稱比較未找到? –