After taking another look at my patch, I realized that I was not quite converting dictionaries to proper alists. Attached is a tweak to do this properly. The printing of dictionaries is not quite as pretty, in particular it's not a table anymore: #+begin_src python return {"a": 1, "b": 2} #+end_src #+RESULTS: : ((a . 1) (b . 2)) But, it feels like the right thing to do, since the result handling code works by converting the result to an elisp value, before passing it to org-mode to decide how to render it. And the proper elisp conversion of a dict should be an alist or a plist. Ideally I wouldn't have to do this from the Python code, and could let org-babel-script-escape convert the dict objects. It would also be useful for other languages with similar dictionaries, like javascript. But it seems fairly complex to implement this from the elisp side, and I'm not sure I'm up for it. I also noticed that I had left a couple docstrings as TODOs -- I'll fix those before finalizing the patch over the next couple weeks.