Pydanticで、配列の要素数に制限を設ける方法に関して解説します。
環境
- Python: 3.11.2
- Pydantic: 1.10.4
conlistを使用して、最大要素数を設定する方法
conlist
を使用すれば、配列に制約を設けることが可能です。
以下は、配列の要素数を2以下にしたい時の例です。max_items
を指定することで最大要素数を設定できます。
from pydantic import BaseModel, conlist
class TestModel(BaseModel):
test_list: conlist(int, max_items=2)
試しに実行してみると、要素数が2の時は正常に実行され、要素数が3の時にValidationErrorが出力されていることが分かります。
from pydantic import BaseModel, conlist
class TestModel(BaseModel):
test_list: conlist(int, max_items=2)
print(TestModel(test_list=[1,2]))
# test_list=[1, 2]
print(TestModel(test_list=[1,2,3]))
"""
Traceback (most recent call last):
File "/root/src/test_pydantic.py", line 9, in <module>
print(TestModel(test_list=[1,2,3]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 342, in __init__
raise validation_error
pydantic.error_wrappers.ValidationError: 1 validation error for TestModel
test_list
ensure this value has at most 2 items (type=value_error.list.max_items; limit_value=2)
"""
最小要素数を設定する方法
同様にconlist
を使用し、今度はmin_items
を指定します。
以下は、配列の要素数を1以上にしたい時の例です。
要素数が1の時は正常に実行され、要素数が0の時にValidationErrorが出力されていることが分かります。
from pydantic import BaseModel, conlist
class TestModel(BaseModel):
test_list: conlist(int, min_items=1)
print(TestModel(test_list=[1]))
# test_list=[1]
print(TestModel(test_list=[]))
"""
Traceback (most recent call last):
File "/root/src/test_pydantic_min.py", line 10, in <module>
print(TestModel(test_list=[]))
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 342, in __init__
raise validation_error
pydantic.error_wrappers.ValidationError: 1 validation error for TestModel
test_list
ensure this value has at least 1 items (type=value_error.list.min_items; limit_value=1)
"""
まとめ
Pydanticで配列の要素数に制限を設ける方法に関して、記載しました。
Pydanticを用いることで、Pythonでも簡単に型を指定できたりValidationを設けることができるので、是非使ってみてください。
また、他にもPydanticに関する記事を記載しておりますので、良かったら覗いていってもらえると嬉しいです。
コメント