Browse Source

[IMP] Few dict exercises.

master
Anand Shukla 5 days ago
parent
commit
46eb9c9d65
  1. 135
      dict.md

135
dict.md

@ -0,0 +1,135 @@
# 📘 Python Dictionary Exercises by EKIKA
These exercises will allow you working with Python `dict`. You’ll learn nested structures, lookups, merges, transformations, filtering, and frequency maps — foundational for JSON, API, and data processing.
---
## PYEKX-2ce5579c
**Invert a Dictionary (Simple)**
### Problem
Write a function `invert_dict(d)` that swaps keys and values.
### Example
```python
invert_dict({'a': 1, 'b': 2})
# Output: {1: 'a', 2: 'b'}
```
### Why? (*Why it matters*)
- Useful in reverse lookups.
- Found in config parsers, ENUM-like mappings, and translation systems.
- Reversing data relationships is common in APIs and normalization.
### Pro Constraints
- Assume all values are unique and hashable.
- Must not mutate the input dictionary.
- Bonus: Extend to many-to-one values: `{1: ['a', 'b']}` if both `a` and `b` mapped to 1.
---
## PYEKX-7b549e55
**Merge Dictionaries with Conflict Resolution**
### Problem
Write `merge_dicts(a, b)` where `b` overrides values in `a`.
Add a `mode` argument:
- `'override'` (default): `b` overwrites `a`.
- `'sum'`: if values are numeric, sum them.
- `'append'`: create lists for conflicting keys.
### Example
```python
merge_dicts({'x': 2}, {'x': 3}, mode='sum')
# Output: {'x': 5}
```
### Why?
- Merging config files, environment overrides.
- Inventory and accounting systems often need conflict handling logic.
- Avoids accidental overwrites by making intent explicit.
### Pro Constraints
- Must not mutate original dicts.
- Use pure dict operations only (no `collections.ChainMap`, etc.).
- Bonus: Support deeply nested dictionaries.
---
## PYEKX-8be01ef0
**Count Frequencies of Elements**
### Problem
Write a function `freq_map(lst)` that returns frequency of elements in a list using a dictionary.
### Example
```python
freq_map(['a', 'b', 'a'])
# Output: {'a': 2, 'b': 1}
```
### Why?
- Foundational for log analysis, NLP, and aggregation pipelines.
- Used in dashboards, tag clouds, voting systems.
- Also forms the basis of histograms and feature vectors.
### Pro Constraints
- Do not use `collections.Counter`.
- Bonus: Make function case-sensitive toggle via `case_sensitive=True`.
---
## PYEKX-4ffdfbd7
**Nested Key Lookup**
### Problem
Write `nested_get(d, keys)` where `keys` is a list like `['a', 'b', 'c']` that returns `d['a']['b']['c']`.
### Example
```python
nested_get({'a': {'b': {'c': 42}}}, ['a', 'b', 'c'])
# Output: 42
```
### Why?
- Vital in parsing JSON, API responses, settings files.
- Common in recursive data structures, permission systems.
- Avoids `KeyError` and nested `try` blocks.
### Pro Constraints
- Must not crash on missing keys.
- Return `None` or optional `default` value.
- Must work with arbitrary depth.
---
## PYEKX-2d3191a8
**Top N Frequent Elements**
### Problem
Write `top_n_frequent(lst, n)` to return top `n` most frequent items.
### Example
```python
top_n_frequent(['x', 'y', 'x', 'z'], 2)
# Output: [('x', 2), ('y', 1)]
```
### Why?
- Used in autocomplete, search trends, error analysis.
- Found in ecommerce (top sold items), NLP (most used terms), and telemetry.
- Teaches sorting dicts by value and memory-efficient counting.
### Pro Constraints
- No third-party modules.
- Handle ties deterministically (alphabetical or insertion).
- Bonus: Make output format toggleable (dict or list of tuples).
---
Loading…
Cancel
Save