I have the following list:
filenames=["SecretOfChimneys_1925.txt", "DeathInTheClouds_1935.txt", "SparklingCyanide_1945.txt", "HickoryDickoryDock_1955.txt", "AtBertramsHotel_1965.txt", "Curtain_1975.txt"] books=[] for filename in filenames: with open(filename) as fin: text=fin.read() books.append(text)
I need to make a list of book titles ordered by year, with the underscore character and the year removed. For example, the first book title should be “SecretOfChimneys”. Call your list booktitles.
Is there a way to use the fact that titles are already sorted by year in books and just select the tiles from that?
Or should I use a sorting algorithm with filename?
Any help would be appreciated, thank you!
Advertisement
Answer
You can use a lambda as the key when sorting. Then use a list comprehension to extract just the title from the sorted list.
booktitles = [f.split('_')[0] for f in sorted(filenames, key=lambda x: int(x.split('_')[1].split('.')[0])) ]