Implement manage_records(operations) to apply insert, update, and remove commands to an initially empty keyed record store.
The pedagogical policies below make the small record-management task deterministic. An insert rejects an existing key, while update and remove reject a missing key. A rejected operation leaves the store unchanged. The function records the error and continues with later operations; the console does not expose language-specific exception classes.
Function Signature
manage_records(operations: list[list[str]]) -> dict
Input
Each operation is a three-string array [action, key, value]:
-
"insert"
: add
key
with
value
; return status
"inserted"
, or
"exists"
if the key is already present.
-
"update"
: replace an existing key's value; return
"updated"
, or
"missing"
if the key is absent.
-
"remove"
: delete an existing key; return
"removed"
, or
"missing"
if the key is absent. Its
value
field is always the empty string and is ignored.
Output
Return an object with exactly these keys:
-
statuses
: one status string per input operation, in input order.
-
records
: the remaining
[key, value]
pairs sorted by key in ascending ASCII lexicographic order.
Constraints
-
0 <= len(operations) <= 100000
.
-
Every action is one of the three strings defined above.
-
Each key contains 1 to 40 lowercase ASCII letters or digits.
-
Each value contains 0 to 100 printable ASCII characters.
-
The input is valid. Do not mutate it.
Examples
Input: operations = [["insert","a","first"],["insert","a","second"],["update","a","third"],["remove","b",""]]
Output: {"statuses":["inserted","exists","updated","missing"],"records":[["a","third"]]}
Input: operations = [["insert","z",""],["remove","z",""]]
Output: {"statuses":["inserted","removed"],"records":[]}
Input: operations = []
Output: {"statuses":[],"records":[]}