【python】TypeError: 'float' object is not iterable といわれた
概要
以下のエラーが発生したためメモ。
TypeError: 'float' object is not iterable
解決策
list(1)やlist(1.0)のようなキャストが発生している場合に発生する。 以下のようにすればOK。
list([1])
【python】TypeError: Object of type 'map' is not JSON serializable といわれた
【python】TypeError: Object of type 'Decimal' is not JSON serializable と言われた
概要
以下のエラーが出てのでメモ。
TypeError: Object of type 'Decimal' is not JSON serializable
また、Qiiaにすでに解決記事を出している方がおり、私も丸コピなので基本的におなじことをしています。
ドキュメントに以下の記載があります。これを使用します。
default を指定する場合は関数を指定して、この関数はそれ以外では直列化できないオブジェクトに対して呼び出されます。 その関数は、オブジェクトを JSON でエンコードできるバージョンにして返すか、さもなければ TypeError を送出しなければなりません。 指定しない場合は、 TypeError が送出されます。
直列化できないオブジェクトに対して呼び出される、つまりオブジェクトが配列であれば配列内の値に対して、2次元配列であれば配列内の配列内の値に対して有効になります。引数として値が渡されてくるので、その値がDecimal型であれば適切にキャストして返す、みたいにすれば良いです。
なんで自分でこんなことを書かないといけないかがわからないのですが、pythonにも都合があるのでしょう。。。 わかる方がいれば教えてください。
解決策
def decimal_default_proc(obj): from decimal import Decimal if isinstance(obj, Decimal): return float(obj) raise TypeError print(json.dumps(value, default=decimal_default_proc))
【Python】NameError: name 'xrange' is not definedと言われる
概要
以下のエラーが出たのでメモ。
NameError: name 'xrange' is not defined
解決策
xrange()
はpython3ではrange()
にremameされているため、range()
にすればOK。
参考
【Python】AttributeError: 'dict' object has no attribute 'has_key'
概要
以下のエラーメッセージが表示されたので対処。
AttributeError: 'dict' object has no attribute 'has_key'
解決策
has_key
はpython3で使えないらしいので、inを使ってキーの存在確認を行う。
if 'Item' in raw_data: # code else: # code
参考
https://stackoverflow.com/questions/33727149/dict-object-has-no-attribute-has-key
【Python】Python3でnew.instancemethodが使えないテーブル作成時にエラー
概要
boto3を利用してテーブルを作成する際に以下のエラーが発生したためメモ。
An error occurred (ValidationException) when calling the CreateTable operation: Hash Key not specified in Attribute Definitions. Type unknown.
解決方法
テーブル作成時に与えるKeySchema
とAttributeDefinitions
の値が一致していない場合に発生。
同じ値を指定すればOK。
【Docker】OCI runtime exec failedと言われた
【概要】 Dockerコンテナに入る際に以下のことを言われたのでメモ。
OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown
【解決方法】
docker exec -it [コンテナ名] /bin/bash
の
/bin/bash
をbin/sh
にする。