What is the main difference between a list and a set in Python?
A list keeps the order of items and allows duplicates, while a set does not keep order and automatically removes duplicates.
Click to reveal answer
beginner
How do you declare a list of integers in a FastAPI request body using Pydantic?
Use List[int] from typing in the Pydantic model to specify a list of integers.
Click to reveal answer
intermediate
How can you validate a set of strings in FastAPI using Pydantic?
Use Set[str] from typing in the Pydantic model. FastAPI will ensure the input is a set with unique strings.
Click to reveal answer
intermediate
Why might you choose a set over a list for input validation in FastAPI?
Because sets automatically remove duplicates, they are useful when you want to ensure all items are unique without extra code.
Click to reveal answer
intermediate
What happens if you send duplicate items in a list validated as a set in FastAPI?
FastAPI will convert the input to a set, removing duplicates before passing it to your endpoint logic.
Click to reveal answer
In FastAPI, which type hint ensures the input is a list of strings?
ASet[str]
BList[str]
CDict[str, str]
DTuple[str]
✗ Incorrect
List[str] tells FastAPI to expect a list of strings, preserving order and duplicates.
Which Python type automatically removes duplicate items?
AList
BDict
CSet
DTuple
✗ Incorrect
Sets do not allow duplicates and automatically remove them.
How do you import the type hint for a set in FastAPI models?
Afrom typing import Set
Bfrom fastapi import Set
Cfrom pydantic import Set
Dfrom collections import Set
✗ Incorrect
Set is imported from the typing module for type hints.
If you want to accept a list but ensure no duplicates, what should you do in FastAPI?
AUse Set as the type hint
BUse Dict instead
CUse List and manually check duplicates
DUse Tuple
✗ Incorrect
Using Set automatically removes duplicates during validation.
What will FastAPI do if the client sends duplicates but the model expects a Set?
AConvert to a list
BKeep duplicates as is
CRaise a validation error
DRemove duplicates silently
✗ Incorrect
FastAPI converts the input to a set, removing duplicates without error.
Explain how to validate a list and a set in FastAPI using Pydantic models.
Think about how Python types affect validation and data shape.
You got /5 concepts.
Describe a real-life example where you would prefer set validation over list validation in a FastAPI app.
Consider situations where duplicates cause problems.
You got /4 concepts.
Practice
(1/5)
1. In FastAPI, when should you use List instead of Set for request data validation?
easy
A. When you want to store only unique items without order
B. When you want to automatically remove duplicates
C. When you want to validate a single item only
D. When the order of items matters and duplicates are allowed
Solution
Step 1: Understand List characteristics
A List keeps the order of items and allows duplicates.
Step 2: Compare with Set characteristics
A Set removes duplicates and does not guarantee order.
Final Answer:
When the order of items matters and duplicates are allowed -> Option D
Quick Check:
List = ordered with duplicates [OK]
Hint: Use List for ordered duplicates, Set for unique unordered [OK]
Common Mistakes:
Confusing Set with List and expecting order
Using Set when duplicates are needed
Thinking List removes duplicates automatically
2. Which of the following is the correct way to declare a FastAPI endpoint expecting a set of integers in the request body?
easy
A. def endpoint(items: List[int]):
B. def endpoint(items: Set[int]):
C. def endpoint(items: dict[int]):
D. def endpoint(items: tuple[int]):
Solution
Step 1: Identify the correct type for unique collection
Set[int] is used to declare a set of integers with unique values.
Step 2: Verify other options
List[int] allows duplicates, dict[int] is invalid syntax, tuple[int] is fixed-length and ordered.
Final Answer:
def endpoint(items: Set[int]): -> Option B
Quick Check:
Set[int] = unique integer collection [OK]
Hint: Use Set[int] for unique integer collections in FastAPI [OK]
Common Mistakes:
Using dict[int] which is invalid syntax
Using tuple[int] which expects fixed length
Confusing List with Set for uniqueness
3. Given this FastAPI endpoint code snippet, what will be the output if the input JSON is {"items": [1, 2, 2, 3]}?
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Set
app = FastAPI()
class Data(BaseModel):
items: Set[int]
@app.post("/unique")
def unique_items(data: Data):
return {"unique_items": list(data.items)}
medium
A. {"unique_items": [1, 2, 3]}
B. {"unique_items": [1, 2, 2, 3]}
C. ValidationError due to duplicate items
D. {"unique_items": []}
Solution
Step 1: Understand Set validation in Pydantic
Pydantic converts the input list to a set, removing duplicates automatically.
Step 2: Analyze the input and output
Input has duplicates [1, 2, 2, 3], output converts to unique set [1, 2, 3].
Final Answer:
{"unique_items": [1, 2, 3]} -> Option A
Quick Check:
Set removes duplicates automatically [OK]
Hint: Set input removes duplicates, output shows unique items [OK]
Common Mistakes:
Expecting ValidationError on duplicates
Assuming output keeps duplicates
Confusing List and Set behavior
4. Identify the error in this FastAPI model using List and Set:
from pydantic import BaseModel
from typing import List, Set
class Model(BaseModel):
names: List[str]
unique_ids: List[int]
def __init__(self, **data):
super().__init__(**data)
self.unique_ids = set(self.unique_ids)
medium
A. No error, code works fine
B. Using List instead of Set for unique_ids is correct
C. Assigning a set to a List field breaks Pydantic validation
D. Missing type annotation for unique_ids
Solution
Step 1: Check field type and assignment
unique_ids is declared as List[int] but assigned a set in __init__, causing type mismatch.
Step 2: Understand Pydantic validation rules
Pydantic expects unique_ids to be a list; assigning a set breaks validation and type consistency.
Final Answer:
Assigning a set to a List field breaks Pydantic validation -> Option C
Quick Check:
Field type must match assigned value [OK]
Hint: Match field type with assigned value to avoid validation errors [OK]
Common Mistakes:
Assigning set to List field without changing type
Ignoring Pydantic's type enforcement
Assuming __init__ can override field types safely
5. You want to create a FastAPI endpoint that accepts a list of tags but ensures no empty or duplicate tags. Which is the best way to validate this using Pydantic?
hard
A. Use tags: Set[str] and add a validator to reject empty strings
B. Use tags: List[str] and manually check duplicates and empties in the endpoint
C. Use tags: List[str] with a validator that converts to set and removes empties
D. Use tags: Set[str] without any validator
Solution
Step 1: Ensure uniqueness with Set
Using Set[str] automatically removes duplicates.
Step 2: Add validator to reject empty strings
Since Set only ensures uniqueness, a validator is needed to reject empty tags.
Final Answer:
Use tags: Set[str] and add a validator to reject empty strings -> Option A
Quick Check:
Set + validator = unique + no empty tags [OK]
Hint: Use Set for uniqueness and validator for empties [OK]
Common Mistakes:
Using List without uniqueness enforcement
Not validating empty strings in Set
Relying on manual checks in endpoint instead of validators
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.