0

辞書と、辞書のいくつかのキーを含むdicリストがあるとします。のキーを持つkeylistのすべての値を含む理解リストを作成したいと思います。dickeylist

私はこのようなコードを持っています:

 [x for x in dic[keylist[i]] for i in range(len(keylist))]

しかし、私はこのエラーが発生しています:

File "<stdin>", line 1, in <module>
NameError: name 'i' is not defined
4

2 に答える 2

2

あなたが望むようです:

 [dic[x] for x in keylist]

リストを反復処理するには、 index を使用する必要はありませんが、for element in alist. を上げるのKeyErrorではなく、次を使用できます。

[dic[x] for x in keylist if x in dic]また[dic.get(x) for x in keylist]

于 2013-07-13T12:32:10.617 に答える
1

次のことを試してください。

[x for i in range(len(keylist)) for x in dic[keylist[i]]]

順番が違うだけです。

しかし、これは実際には、代わりに書くべきもののかなり難読化されたバージョンです。より良いオプションは、他の回答にあります。

于 2013-07-13T12:34:14.297 に答える