2015-11-03 173 views
2

我寫了通過網站搜索並返回幣值和匯率的輸出的樣品低於通過嵌套列表蟒蛇

[['Argentine Peso', ['9.44195', '0.10591']], ['Australian Dollar', ['1.41824', '0.70510']], ['Bahraini Dinar', ['0.37743', '2.64953']]... 

的嵌套列表我需要寫代碼搜索代碼需要一個名稱的輸入,並返回與之相關聯的,所以如果我在鍵入阿根廷比索它將返回

[9.44195, 0.10591] 

,但即時通訊真的不知道如何通過搜索列表中的值

+1

我認爲你應該使用一個字典而不是嵌套列表,它會使搜索的關鍵方式更容易 –

回答

6

你可能想要一本字典,而不是一個列表:

>>> l = [['Argentine Peso', ['9.44195', '0.10591']], ['Australian Dollar', ['1.41824', '0.70510']], ['Bahraini Dinar', ['0.37743', '2.64953']]] 
>>> d = dict(l) 
>>> d["Argentine Peso"] 
['9.44195', '0.10591'] 

如果由於某種原因,你必須使用一個名單,我使用類似有時以下內容:

>>> matches = [it for it in l if it[0] == query] 
>>> assert len(matches) == 1, "match not found or ambiguous" 
>>> matches[0] 

...雖然我大多使用它進行模糊匹配。爲了完全匹配,我強烈推薦字典;這就是他們在那裏的原因。

+0

你打我:)好工作 –

0

這是一個內襯:

lookup = dict([['Argentine Peso', ['9.44195', '0.10591']], ['Australian Dollar', ['1.41824', '0.70510']], ['Bahraini Dinar', ['0.37743', '2.64953']]]) 
0

不使用列表理解或類型的字典的變體:

currency_list = [['Argentine Peso', ['9.44195', '0.10591']], 
    ['Australian Dollar', ['1.41824', '0.70510']], 
    ['Bahraini Dinar', ['0.37743', '2.64953']]] 

def search_list(query_string, cur_list): 
    for key, val in cur_list: 
     if key == query_string: 
      return val 

search_list('Australian Dollar', currency_list) 

在列表中的每個條目是兩個部分組成的列表:

  1. 表示貨幣的字符串(鍵)
  2. 表示c urrency的值範圍(值)

在Python中,你可以自動分配n個值的列表的值n個變量:

a, b, c = [7,8,9] 

這是類似於如何(鍵,值)對是在for循環的每次迭代中生成。

但是,使用將列表轉換爲字典的解決方案將爲您提供執行最快速查找的數據結構。