定義を少しずつ変えた複数の関数を辞書形式で保持したいため、
以下の様なpythonのコードを考えました。

funcs = {}
for i in range(5):
    new_key = 'f'+str(i+1)
    funcs[new_key] = lambda x: x**i  #0次関数から4次関数を格納

しかしそれぞれの関数に引数を与えると、全て同じ値が返ってきます(最後に格納した関数の値)

for f in funcs.values():
    print(f(5))

実行結果:

625
625
625
625
625

これを(1, 5, 25, 125, 625)を返すようにしたいのですが、
どのようにすればよいかご教授いただけないでしょうか。

ちなみに、for文を使わずに一つ一つ手で格納すると正しく値が返ってきました。
また上コードにより格納された各関数のidは別々となっていました。

for f in funcs.values():
    print(id(f))

実行結果:

4503380040
4503310120
4503309984
4503309848
4503309168

以上、よろしくお願い致します。