You algorithm can be implemented in a such way
from itertools import imap
def generate_playlist(pairs):
'''
@param pairs: list of pairs, first element is a file name, second - repetition amount
@return: generator for playlist items
'''
max_show_times = max(imap(second, pairs))
for i in xrange(max_show_times):
for file_path, repetition_count in pairs:
if i % (max_show_times / repetition_count) == 0:
yield file_path
def second(col):
if col and len(col) > 1:
return col[1]
playlist = generate_playlist(file_to_count_pairs)
playlist = imap(get_file_name_without_ext, playlist)