A dictionary maps hashable keys to values, and replacing an existing key replaces its value rather than retaining another entry.
Python dictionaries: insertion order and duplicate-key replacement
Operation contract
The receipt ledger inserts two identifiers, then updates the first. Its key order remains insertion order while its stored amount changes. A missing-key lookup with get returns the chosen default without inserting a new ledger entry. Those are separate facts from whether the business permits duplicate receipt identifiers.
Failure and ownership boundary
If duplicate input must be rejected, test membership before assignment rather than accepting silent last-write-wins behavior. A dictionary copy shares nested values, and mutating its size during iteration can raise RuntimeError. Python collection exercise: reject repeated receipt IDs before committing state and Python JSON validation: reject duplicate members and non-integer amounts make that input policy explicit.
Working program
ledger = {41: 125, 42: 75}
ledger[41] = 200
print(list(ledger))
print(ledger[41])
print(ledger.get(99, "missing"))
print(99 in ledger)Output
[41, 42]
200
missing
FalseCosts and limits
Expected hash lookup is constant work under ordinary key behavior; collisions and key hash/equality work can change that cost. Retained storage grows with distinct keys, and insertion order is not sorted key order.
Common Mistakes
- Do not silently replace duplicates when uniqueness is required.
- Insertion order is not numeric sorting.
Connected lessons
Python collection exercise: reject repeated receipt IDs before committing state, Python JSON validation: reject duplicate members and non-integer amounts, Python sets: membership and deduplication do not preserve input order, Java HashMap: keys, collisions, and update operations.
Apply this boundary
Python Counter and deque: counts, queues and bounded history, Python trie: exact words, prefixes and node allocation, Pandas joins: cardinality validation and missing lookup keys.
Related Python operation checks
Python hash and equality: immutable dictionary keys, Python sliding window: longest span without repeated symbols.
Follow the related contract
Python defaultdict: missing-key reads can create state, Python collections reference: selection costs and retained ownership.
Check the next state boundary
Python OrderedDict: explicit reordering differs from insertion order, Python reconciliation exercise: reject duplicate IDs before comparing ledgers.
Check this related boundary
Python dictionary views: iteration sees a live mapping, not a snapshot, Python exercise: retain first-seen order while rejecting duplicate IDs.
