How to add coroutines with an existing argument To a dictionary?

some thing like this doesn’t work

public Dictionary<string, Func<Vector3, IEnumerator>> URDD;
    private void Start()
    {
        URDD = new Dictionary<string, Func<Vector3, IEnumerator>>() {
            ["U"] = movePlayerUpCDirectionlist(Vector3.right)
    };
    }

and neither this

Dictionary<string, Coroutine> UpD = new Dictionary<string, Coroutine>();
  Coroutine crt = StartCoroutine(movePlayerRightC(Vector3.right));

It should be either:

 private void Start()
 {
     URDD = new Dictionary<string, Func<Vector3, IEnumerator>>() {
         ["U"] = movePlayerUpCDirectionlist
     };
 }

And call StartCoroutine(URDD["U"](Vector3.right));

or

 private void Start()
 {
     URDD = new Dictionary<string, IEnumerator>() {
         ["U"] = movePlayerUpCDirectionlist(Vector3.right)
     };
 }

And call StartCoroutine(URDD["U"]);