2013-02-14 96 views
0

我知道可以更改字典中的鍵。但是是否可以使用定義的模式更改所有的鍵?在這種情況下,我有一個包含字典:有序更改字典鍵(Python)

{'>Apple': 'Orange', '>Grape': 'Hopz'} 

問:所有鍵的含有「>」 +字符串。我可以刪除這些'>'並更新嗎?或更新沒有'>'?

小背景: 在我的腳本中,我嘗試比較一個字典值與這個例子鍵值導致錯誤。我認爲這是由於'>',因爲v =! k如果k ='> foo'和v ='foo'

如果您是科學家,那麼'>'是fasta解析器的結果。我可能只是改變腳本在行的開頭不寫'''(我還沒有試過這個..)。

+0

當我看到這樣的問題時,我覺得有必要注意:[有可用的Python的體面的FASTA解析器](http://stackoverflow.com/questions/14800970/regex-to-remove-new-lines-先進的一個特定的字符#comment20728952_14800970)。 – 2013-02-14 21:15:53

+0

確實......但我的問題不是關於我所做的解析器。這只是一個想到的潛在解決方案。 – 2013-02-14 23:27:44

回答

6

這是一個字典理解很容易:

updateddict = {k.lstrip('>'): v for k, v in yourdict.iteritems()} 

爲Python 2.7。對於Python 3,請改爲使用yourdict.items()

對於Python 2.6和更早的版本,在沒有字典理解語法的是,使用方法:

updateddict = dict((k.lstrip('>'), v) for k, v in yourdict.iteritems()) 

str.lstrip()是一種快速,簡潔的方法,從鍵的開始刪除任何>字符。

+0

yourdict.items我可以理解:P但是,「.lstrip」是否需要爲此導入某些內容? – 2013-02-14 17:49:58

+0

@jon_shep不,這是一個字符串方法。 – NullUserException 2013-02-14 17:51:17

+1

謝謝你們!總是喜歡這裏關於我的書不教我的東西的快速回復。 – 2013-02-14 17:52:20