2016-03-22 12 views
-2

リストmylistと辞書dictがあります。mylistdictに基づいて別の辞書を作成したいと思います。 2つのインデックスを追跡する必要があるので、辞書の理解でどのようにすることができますか? 1つは辞書のキー用で、もう1つはリストの範囲用です。私は以下を試した:リストと別の辞書からPythonで辞書を作成する方法

new = {F(dict[k]):mylist[i] for k in dict, for i in range(len(mylist))} 

しかし、それは動作しません。

+2

幾分接線ですが、 'l1'や' ll'のようなものは単純にひどい識別子になります。なぜ、例えば以下に起因するバグを追跡するのが難しいのか? 'll'の代わりに' l1'を書いていますか? –

+0

@ zondo説明していただきありがとうございます。 –

答えて

2

使用zip()

new = {F(dict[key]): item for key, item in zip(dict, ll)} 

それは内蔵と競合するので、あなたは本当に、しかし、変数名としてdictを使用しないでくださいタイプで。 listも同じ理由で良い名前ではありません。それに加えて、内部に何があるのか​​、それは何を教えてくれるのですか?リストと辞書の両方にわかりやすい名前を使用する必要があります。

+0

私は変数名としてdictについてのzondoのポイントに同意します、それはトラブルを求めています... – kpie

0

次のようなもので逃げるかもしれません:

new = {F(dict[dict.keys()[i]]):ll[i] for i in range(len(ll))} 
+0

'.keys()'がリストではなく 'dict_keys'オブジェクトを返すので、Python3では動作しません。 – zondo

+0

良い点、Python 3ではdict.keys()をリストとしてキャストし、i番目の要素を取得する必要があります。 – kpie

関連する問題