As an experienced python programmer given this input `{
    "underdog": [
        {
            "market_name": "FP",
            "data": [
                {
                    "sport": "TENNIS",
                    "league": "",
                    "market_name": "FP",
                    "display": {
                        "title": "",
                        "player_name": "Alexander Zverev"
                    },
                    "line": 65.45,
                    "odds": [
                        {
                            "book": "Underdog (3/5 Pick)",
                            "price": 1.82
                        }
                    ],
                    "slip_selection": {
                        "over": {
                            "id": "2451ed9e-764f-4d64-bafa-9bcc99d373dc",
                            "choice": "higher",
                            "choice_display": "Higher",
                            "over_under_line_id": "b30986e3-6cc1-44de-81be-37dce173610e",
                            "type": "OverUnderOption"
                        },
                        "under": {
                            "id": "2a1f32be-3906-4497-94c7-3caf38cabf22",
                            "choice": "lower",
                            "choice_display": "Lower",
                            "over_under_line_id": "b30986e3-6cc1-44de-81be-37dce173610e",
                            "type": "OverUnderOption"
                        }
                    }
                }
            ]
        }
    ],
    "prizepicks": [
        {
            "market_name": "FP",
            "data": [
                {
                    "sport": "TENNIS",
                    "league": "",
                    "market_name": "FP",
                    "display": {
                        "title": "",
                        "player_name": "Alexander Zverev"
                    },
                    "line": 65.45,
                    "odds": [
                        {
                            "book": "PrizePicks (3/5 Pick)",
                            "price": 1.82
                        }
                    ],
                    "slip_selection": {
                        "over": {
                            "id": "2451ed9e-764f-4d64-bafa-9bcc99d373dc",
                            "choice": "higher",
                            "choice_display": "Higher",
                            "over_under_line_id": "b30986e3-6cc1-44de-81be-37dce173610e",
                            "type": "OverUnderOption"
                        },
                        "under": {
                            "id": "2a1f32be-3906-4497-94c7-3caf38cabf22",
                            "choice": "lower",
                            "choice_display": "Lower",
                            "over_under_line_id": "b30986e3-6cc1-44de-81be-37dce173610e",
                            "type": "OverUnderOption"
                        }
                    }
                }
            ]
        }
    ],
    "parlayplay": [
        {
            "market_name": "FP",
            "data": [
                {
                    "sport": "TENNIS",
                    "league": "",
                    "market_name": "FP",
                    "display": {
                        "title": "",
                        "player_name": "Alexander Zverev"
                    },
                    "line": 65.45,
                    "odds": [
                        {
                            "book": "ParlayPlay (3/5 Pick)",
                            "price": 1.82
                        }
                    ],
                    "slip_selection": {
                        "over": {
                            "id": "2451ed9e-764f-4d64-bafa-9bcc99d373dc",
                            "choice": "higher",
                            "choice_display": "Higher",
                            "over_under_line_id": "b30986e3-6cc1-44de-81be-37dce173610e",
                            "type": "OverUnderOption"
                        },
                        "under": {
                            "id": "2a1f32be-3906-4497-94c7-3caf38cabf22",
                            "choice": "lower",
                            "choice_display": "Lower",
                            "over_under_line_id": "b30986e3-6cc1-44de-81be-37dce173610e",
                            "type": "OverUnderOption"
                        }
                    }
                }
            ]
        }
    ]
}` find the same player across the underdog, prize picks, parlayplay and any other sites in this input in the future and the same market. Then add that player’s `line` in a dictionary output that has the players name, market and each sites line. The final output should be a list of these dictionaries.