2013-08-02 1 views
0

У меня есть массив:Создать плейлист в питоне для объявления проигрывателя

filename,number of times to show it

Пример:

video1.mp4,50 
video2.mp4,100 
video3.mp4,50 
video4.mp4,150 

Что лучший способ создать список воспроизведения файлов, как:

video4 
video2 
video4 
video1 
video2 
video3 
video4 

Возможно smth like:

взять Макс show_times переменного = это число шоу-блоки и попытаться сделать каждый блок, как:

video_files_list = ((file1,50), (file2,100), (file3,300))

списка воспроизведения = []

при г = 0 до max_show_times: // max_show_times = 300

для к в video_files_list:

if i % (max_show_times/(max_show_times/k[1])) ==0: 

// к [1] ​​- для ФАЙЛ1 50, для file2 является 100

  playlist.add(k[0]) 
+0

Валерий, какова логика порядок ожидаемого плейлиста? – signalpillar

+0

Логика заключается в том, чтобы попытаться избежать таких вещей, как: video1 video1 video1 – Valeriy

ответ

0

Вы алгоритм может быть реализован в таким образом

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)