2016-06-30 10 views
0

特定のものを除いたdictのキーのリストを作る方法はありますか?一つのコマンド?私はlist1 = aDict.keys().remove('b')のようなSTHを探していますPython dict key +リストの削除

aDict = {'a': 'cat', 'b': 'dog', 'c': 'cow'} 
list1 = aDict.keys() 
list1.remove('b') 

:それを行うことができる2つのコマンドを使用して

。私はこれがうまくいかないことを知っていますが、うまく働いていますか?

+0

なぜあなたは1つのコマンドでそれを必要としますか? –

答えて

3

リスト内包表記を使用すると、繰り返しを繰り返すときに結果をフィルタリングできます。たとえば:

list1 = [key for key in aDict if key != 'b']

はそれを行うだろう。右の答えはちょうどあなたが提供する例を使用するかもしれない、と述べた

list1 = [key for key in aDict.keys() if key != 'b'] 

1

は何あなたはおそらく探していると、リスト内包表記です。 Pythonスタイルのガイドでは、自分が行っていることの自明性を最大限に引き出すためにコードを書くことを提案しています。 1つのライナーでそれを行う理由がない限り、あなたの意図をより明確にするより長いコードを目指してください。

+1

私は同意しません。一度あなたがそれらを見に慣れると、リスト内包は美しく読めるようになります。あなたと私が答えたものは、1)リストを作る、2)aDictのキーを使う、3)bを除いて、私たちの意図が一目で分かります。それは非常に明白です! –

+1

@KirkStrauser私はほとんど同意し、私は絶対にリスト内包を愛しています。しかし、私はいくつかのロジックを1つのライナーにするという質問は、あなたのロジックを1つのライナーにしても必ずしもより良いコードにすることはできないという警告ステッカーが付いてくるはずです。 –

+0

確かに。この特殊なケースは、一度に簡潔で、効率的で、読みやすくすることができる1ライナーの素晴らしいケースだと思います。私はコードゴルフのために多くの忍耐を持っていません。 –

関連する問題