2011-08-21 51 views
0

我有一個類似的列表:創建偏移常量到一個列表

host_info = ['stackoverflow.com', '213.213.214.213', 'comments', 'desriprion', 'age'] 

有時候,我需要從列表中刪除一個或多個元素,然後將列表返回給調用者。作爲一個例子刪除評論項目我會這樣做:

host_info.pop(2) 

我寧願爲每個項目使用常數,而不是一些幻數。

然後,我可以使用:

host_info.pop(comments) # comments is integer 2 

什麼是列舉這些常量所以它的簡單,以維護它們在列表偏移改變的最佳途徑?

回答

2

最簡單的方法是到您的列表更改爲詞典:

keys_list = ['host',...] 
host_info = dict(zip(['stackoverflow.com', '213.213.214.213', 'comments', 'desriprion', 'age'], keys_list)) 

現在,您不必擔心密鑰列表,如果你刪除從host_info字典中的項目也不會影響關鍵=>值協會

,或者如果你只有一臺主機信息列表:

host_info = {'host':'stackoverflow.com, 'ip':'213.213.214.213',...} 

編輯:

要從host_info使用pop刪除鍵:

host_info.pop('host') 

如果你不能確定,關鍵是那裏你可以使用:

host_info.pop('host',None) 

,或者您可以使用:

if 'host' in host_info: 
    del host_info['host'] 

作爲一個旁註AdamKG有一個很好的評論,解釋說你不想把它轉換回列表。你可以代替這樣做:

host = host_info['host'] 

這將刪除「鍵」映射列表上的依賴,這兩個列表組合成一個單一的關聯容器。

+0

如果我使用這種方法,我將如何刪除元素並返回一個元素被刪除的列表?謝謝。 – pomodoro

+0

@pomodoro:我在我的回答中加入了一些例子 – GWW

+1

你不會,你會繞過字典來代替。 GWW建議(正確地說,我認爲)你不應該首先使用一個列表;因爲你描述的是一個命名映射而不是項目列表,字典是最合適的。 – AdamKG