New Multi-type Dictionary
Build a dict by renaming input labels — the dictionary node that respects your naming
- key-value-1
- dict
New Multi-type Dictionary is the most intuitive way to assemble a Python dict in ComfyUI I've found: you connect values to its inputs, rename each input's label to whatever key you want, and the node emits a dict with those labels as the keys. No key/value text boxes, no JSON editing, no "type the key twice" ceremony. Want {"seed": 12345, "strength": 0.8, "disabledExtensions": {...}}? Label the sockets seed, strength, disabledExtensions, wire the values, done.
The "multi-type" in the name is doing real work too. Each input is *-typed, so one dictionary can mix scalars, lists, nested dicts, even images - values keep their native Python types rather than being stringified. That makes it a natural fit for building config objects, API payloads, or a bundle of settings you want to pass to a downstream consumer as one tidy package. It pairs especially well with the pack's own Get Setting node, whose README example feeds a couple of setting values into this node to produce a settings dict.
How it works
This is a frontend/backend collaboration, and it's worth knowing because it explains the one quirk you might hit. The UI manages the dynamic key-value-n inputs: connect one and a new empty socket appears, disconnect and extras get trimmed. During graphToPrompt, the frontend writes the mapping of input-name → label into the workflow's extras under ovum.multi.dict:(<nodeId>). At execution, the Python side reads that mapping from extra_pnginfo and builds the dict with your labels as keys. If a label is missing, it falls back to the input name. The node's IS_CHANGED always returns NaN, meaning it re-runs every execution so the latest labels are always picked up.
The inputs and outputs that matter
- key-value-1 - the seed dynamic input (
*). Rename its label to set the dictionary key; morekey-value-nsockets appear as you connect. - dict (output) - a DICT with one entry per connected input, keyed by your labels.
Installing it
In comfy-ovum (sfinktah). Easiest via ComfyUI Manager - search "comfy-ovum", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum
Restart after cloning. No models or heavy deps - the pack's requirements (pillow, numpy, requests, aiohttp, etc.) are light and Manager handles them.
Common issues
The one real failure mode is the label mapping not surviving to execution. This node depends on the frontend writing the input-name→label pairs into workflow extras, so anything that bypasses that path (running via the API with a hand-built prompt, or a workflow where the extras got stripped) means keys fall back to the default input names like key-value-1 - and the node even prints a debug line when it can't find the mapping in extra_pnginfo. If your keys suddenly look anonymous, that's what happened. Also: labels are case-sensitive and can be any string, but keep them unique - duplicate labels silently produce a dict where one key overwrites the other.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| key-value-1opt | * | Connect any value here; rename the input label to become the key. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| dict | DICT | — |