Reads paragraphs of common artists separated by commas I want to make this faster, I'm not a great coder and just want to learn. This program reads paragraphs of common artists separated by commas. The user inputs the name of a desired artist and the program searches through the paragraphs to find all related artists and sorts them into order of most common to least common. The artist text file is very large 600kb of text so perhaps that's the reason it's slow.

class ArtistSuggester:
    fileName = "list_of_artists.txt"
    arrayOfLists = []
    artist = input("Enter Artist Name: ")


    @classmethod
    def make_array(cls):
        # sets text to 2D-array
        f = open(cls.fileName, 'r', encoding="utf8")
        curr_par = f.read().split("\n")
        for line in curr_par:
            cls.arrayOfLists.append(line.split(","))

    @classmethod
    def get_locations(cls):
        # searches array for given artist and returns array with areas where the artist was found
        locations = []
        for x in range(0, len(cls.arrayOfLists)):
            for y in range(0, len(cls.arrayOfLists[x])):
                if cls.arrayOfLists[x][y] == cls.artist:
                    locations.append(x)
        return locations

    @staticmethod
    def search_array_for_artist(the_list, artist):
        # searches given array for the given artist's name and returns the position
        # if found nothing returns negative number to symbolize non-existence
        pos = 0
        for x in range(0, len(the_list)):
            if the_list[x] == artist:
                pos = x
                break
            else:
                pos = -1
        return pos

    @classmethod
    def ordered_suggestion_list(cls):
        # makes the final suggestion list in correct order
        # makes two arrays, one with the names and the other with the counts of each throughout the text file.
        check = cls.get_locations()
        final_list = cls.arrayOfLists[check[0]]
        final_list.remove(cls.artist)
        count = [1] * int(len(final_list))
        for x in range(1, len(check)):
            for y in range(0, len(cls.arrayOfLists[check[x]])):
                if cls.arrayOfLists[check[x]][y] == cls.artist:
                    continue
                elif cls.search_array_for_artist(final_list, cls.arrayOfLists[check[x]][y]) &gt; 0:
                    count[cls.search_array_for_artist(final_list, cls.arrayOfLists[check[x]][y])] += 1
                else:
                    final_list.append(cls.arrayOfLists[check[x]][y])
                    count.append(1)
        # makes a dict based off the count and names list to combine values to the keys
        combined_list = dict(zip(final_list, count))
        new_list = []
        for key, value in sorted(combined_list.items(), key=lambda x: x[1], reverse=True):
            new_list.append(key)
        print(new_list)
Does this really have to be a class?
You have alot of classmethod's making me wonder if this really has to be a class.
Review

Change the datatype of Artists
You can change it to a set making the lookup a O(0)instead of O(n) operation

You never close the file
It is better to use with open(a) as a: context so python will automatically close the file

We can use collections.Counter to count the elements


Code
from collections import Counter

ARTISTS_FILE = 'list_of_artists.txt'

def read_file():
    with open(ARTISTS_FILE, &quot;r&quot;) as f:
        return [
                    set(artist.strip().split(',')) 
                    for artist in f.readlines()
                ]

def make_ordered_list(artist):
    artists = read_file()
    counts = Counter()
    for similar in artists:
        if artist in similar:
            similar.remove(artist)
            counts.update(similar)
    return sorted(counts, key=lambda x: (-counts[x], x))

def main():
    artist = input(&quot;Type the artist: &quot;)
    print(make_ordered_list(artist))

if __name__ == '__main__':
    main()