Preset Buttons to set legendonly for groups of traces

Hello, I am attempting to create a plot that houses roughly 60 to 70 traces and I want to create 4 or 5 buttons that will “dim” certain groups of traces (maybe button 1 shows 5 of 60 traces, but the user can still see/select the other 55 traces and add them back to the plot via the legend). I have searched through several examples, but I cannot seem to find exactly what I am looking for/what the implementation should be. I’ve “gotten close” with the following :

        traces = []
        buttons = []
        for col in self.data_df.columns:
            print(col)
            traces.append(go.Scatter(x=self.data_df.index, y=self.data_df[col], name=col, visible=True))
            buttons.append(dict(method='restyle',
                                label=col,
                                visible=True,
                                args=[{'visible' : True}, [i for i, x in enumerate(traces) if x.name != col]],
                                args2=[{'visible':'legendonly'}, [i for i, x in enumerate(traces) if x.name != col]]
                                )
            )

But I am creating a button for every trace, and I am unsure how to set “groups” of trace/tracenames in the args. Any help and/or potential guidance would be greatly appreciated.

Thanks,
Alex