A Cloudera data-processing component stores an ordered stream as a singly linked list. Given the list head, return the value of its middle node using a single traversal.
If the list contains an even number of nodes, return the second of the two middle nodes. The list is represented using nested dictionaries: each node has an integer value and a next field containing another node or None.
Implement find_middle(head), where head is either None or a node represented as {"value": integer, "next": node_or_none}. Return the integer value stored in the middle node. You may use only constant auxiliary space, excluding the input list.
def find_middle(head):