`HashMap[KeyType, ValueType]` is Vyper's equivalent of Solidity's `mapping`. It supports arbitrary key types (including addresses and other hashables) and lazily-initialized default values.
balances: public(HashMap[address, uint256])
allowances: public(HashMap[address, HashMap[address, uint256]])
@external
def deposit():
self.balances[msg.sender] += msg.valueLike Solidity mappings, a `HashMap` has no length and cannot be iterated — you must track any list of keys separately if you need to enumerate them.