Below example dump it as a list, but I wish to dump it in property value pairs:

    #+BEGIN_SRC elisp :results output
    (defun dump-plist(obj level)
      (if (listp obj)
          (dolist (item obj)
            (dump-plist item (1+ level)))
        (progn
          (while (> level 1)
            (princ "  ")
            (setq level (1- level)))
          (princ obj)
          (princ "\n"))))
    
    (defun test()
      (let* ((my-plist (list :a 1 :b 2 :c 3 :more (list 4 5 6))))
        (print my-plist)
        (dump-plist my-plist 0)
        ))
    
    (test)
    #+END_SRC
    
    #+RESULTS:
    #+begin_example
    
    (:a 1 :b 2 :c 3 :more (4 5 6))
    :a
    1
    :b
    2
    :c
    3
    :more
      4
      5
      6
    #+end_example

expected output is:

    :a 1
    :b 2
    :c 3
    :more (4 5 6)