は間違っています。 Pythonでlambdas
に辞書を渡すことはできませんし、目的の結果を得ることはできません。操作を実行する代わりに、ここで何が起きているのかを見てみましょう。
>>> dict = {'a': {'b': 2}}
>>> map(lambda x: x, dict)
['a']
あなたがそれを見ることができるので、lambda
に渡されるx
の値が['a']
、ではない私たちのオリジナルの辞書です。これは、辞書をイテレータとして渡すと、keys
を反復処理するためです。これをサポートするには、これを試してください。
>>> map(lambda x: x, {1: 'a', 3: 'c'})
[1, 3]
もう1つの方法は、keyword arguments
のように渡すことです。ラムダを試してみましょう。希望の結果を得るにはmap
を使ってみましょう。
>>> map(lambda x:x.get('a').get('b'), **dict)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: map() takes no keyword arguments
おっとは、この場合map()
にキーワード引数を扱う問題を抱えています。
このように、次のような方法を使用することができます。
>>> dict.get('a').get('b')
2
>>> dict['a']['b']
2
また、組み込み関数名に一致する変数名を避けるようにしてください。
'dict'は変数か関数ですか?組み込み関数の名前を再利用しないでください! –