Pythonで「反復可能要素」と言われると・・・
謎の日本語訳
formdata (dict or iterable of tuples) -- これは、URLエンコードされてリクエストの本文に割り当てられるHTMLフォームデータを含む辞書(または (キー, 値)タプルの反復可能要素)です。
(キー, 値)タプルの反復可能要素
とは?
タプル(tuple)は("nyan",2)の形式で、反復可能要素はiterableのことなのでforで渡す[]のlist形式にすればと雑に考えましたが・・・。
[('wan', 1), ('nyan', 2), ('wan', 2)]
こんな感じかな?とね。
ソース確認だ!
疑問が出たのでソースを確認しました。
try: formdata_keys = dict(formdata or ()).keys() except (ValueError, TypeError): raise ValueError('formdata should be a dict or iterable of tuples')
なるほどdict形式ならkeys()で取り出せるね。
それならば、tupleのlist形式ならどうなるのか?
確認してみましょう。
>>> test = [('wan', 1), ('nyan', 2), ('wan', 2)] >>> test [('wan', 1), ('nyan', 2), ('wan', 2)] >>> dict(test).keys() dict_keys(['wan', 'nyan'])
ちゃんと取れますね。
ちなみに、keysで取得しているのはHTMLのname情報を取得するためみたいなので、重複しても問題無いようです。
モヤッとしたときは、ソース確認するとスッキリしますね。
そして、「タプルならリスト形式です。」とドキュメントにあれば理解しやすいのかな?と思ったけど['wan', 1, 'nyan', 2, 'wan', 2]
としてしまいそうだから、(キー, 値)タプルの反復可能要素
で良いかも、勉強になりました。
なお日本語訳の元となるiterable of tuples
はエラーメッセージに書いてありました。