I was wondering if anybody knows how to enable or implement tab completion for dictionary keys in IPython? It seems like it wouldn't be very different from functionality that already exists, like tab completion of object attributes. If I'm wrong, then I'd like to understand why
Asked
Active
Viewed 3,332 times
14
-
Just to clarify: you mean that if `d = {"apple": 1, "banana":2}`, then if you type `d["a"]` and put the cursor after `a`, you'd want `apple` to be filled in? – David Robinson Jul 31 '13 at 15:40
-
2@DavidRobinson I imagine I would tye `d["a` and hit tab and it would complete to `d["apple"]` – gggg Jul 31 '13 at 16:33
-
Thanks pointing at the matter. Made a report from this at https://bugs.launchpad.net/python-mode/+bug/1251690 – Andreas Röhler Nov 15 '13 at 16:46
2 Answers
9
IPython supports dict key completion for string keys since version 3.0.0 (despite not appearing in release notes), thanks to this patch. It also supports column name completion for numpy struct arrays and pandas DataFrame
columns, and for other types that redefine __getitem__
through defining _ipython_key_completions_
.

joeln
- 3,563
- 25
- 31
-
Great, this is a nice way of implementing completion for your own `subscriptable` classes. – Tomasz Gandor Jan 14 '21 at 20:06
2
It's not built into IPython 2.x. If you want to add it, have a look at this, where someone hacked a solution:
https://github.com/ipython/ipython/issues/1533
Also, there are many short and easy ways to create objects from dictionaries, to gain the usual tab completion. If that would help you, use one of the ways described in this question: