Я решил попробовать создать функцию перебора цветов
Количество элементов внутри словаря может быть разным как и число в num
Если количество элиментов больше числа num то остаток не учитывается
1:red, 2:blue, 3:green # Остальное удаляется :yellow , :brown
Если количество элиментов меньше числа num то
Либо значения перебираются по второму кругу
1:red, 2:blue, 3:green, 4:red, 5:blue,
Либо устанавливается последнее доступное число
1:red, 2:blue, 3:green, 4:green, 5:green,
1:red, 2:blue, 3:green, 4:blue, 5:green,
Значение step влияет на поочередность вывода
где учитывается только каждый второй элемент списка каждый третий и так далее
Мой код
from collections import defaultdict
arr = {
'A_text':['Blue','Green'],
'background':['Putpure','Brown','White',"Lemon"],
'border':['Yellow','Sky'],
'shadow':['Pink','Black'],
}
#arr = {'A_text':['Blue','Green']}
step = [2,1]
type = [1]
def fun(
id,
child=None,
type=3,
num=1
):
end = 0 if type == 1 else len(child)-1 if type == 2 else id
#print('{}+{}'.format(id+num,len(child)-1))
if id+num <= len(child)-1 :
#print("BAD")
fin = id+num
else :
fin = end
#print('fin {}'.format(fin))
return fin
#return id+num if id+num <= len(child)-1 else end
num = 3
id = defaultdict(int)
for x in range(num):
new_arr = {}
for key, value in sorted(arr.items()):
#print(arr[key])
#print(id[key])
#print(id['step'])
#print(id['type'])
if key == 'A_text' :
new_arr[key] = [
arr[key][id[key]],
arr[key][fun(id[key], arr[key] ,1, 1)]
]
else :
new_arr[key] = arr[key][id[key]]
id[key] = fun(
id[key],
value,
type[id['type']],
step[id['step']]
)
id['step'] = fun(id['step'],step)
id['type'] = fun(id['type'],type)
print(new_arr)
Сейчас я запутался и не совсем понимаю почему
A_text после второго значения вместо ['Blue','Green'] выводит ['Green','Blue']
Да я знаю насколько это все ужасно выглядит.
Но если кто нибудь знает как вывести значения если доступных indexs меньше чем num
То можете мне ответить