В настоящее время у меня есть словарь с заглавными буквами в качестве ключей и список в качестве значений. Список имеет описание в [0] и имя переменной, которая указывает на другой словарь в [1].
categories = {'A': ('Song Language', song_language),
'B': ('Rythm/Genre', rythm_genre),
'D': ('Atributes', atributes),
'E': ('Region', region)
}
song_language = {
'A1': 'Spanish',
'A2': 'English',
'A3': 'Spanglish',
'A4': 'Non S&E',
}
В случае categories['A'][1]['A2']
это равно English
.
Ни один из этих словарей не доработан, то есть я постоянно обновляю их, чтобы добавлять записи. Это становится очень утомительным, чтобы:
- Создание дополнительных словарей
- Изменить существующие словари
Использование словарей заключается в их циклическом просмотре. Во-первых, перебираю словарь categories
и вложенным способом я перебираю словарь, содержащийся в [1] списка.
Каждый раз я собираю данные, чтобы определить, должен ли я добавить ключ вложенного словаря в список. если пользователь вводит «YL» или «NL», скрипт выполнит некоторые действия и затем перейдет к следующему словарю.
for category_key in categories:
next_dict = categories[category_key][1]
dict_desc = categories[category_key][0]
print(dict_desc, ": ", next_dict)
for attribute in next_dict:
prompt = "\tIs this song == "+next_dict[attribute]+"("+attribute+"): "
add_to_list = input(prompt).upper()
while add_to_list not in ('Y', 'YL', 'NN','NL','N'):
prompt = "Is this song == " + next_dict[attribute] + "(" + attribute + "): "
add_to_list = input(prompt).upper()
if add_to_list == 'Y':
comment_list.append(attribute)
elif add_to_list == 'YL':
comment_list.append(attribute)
break
elif add_to_list == 'NN':
continue
elif add_to_list == 'NL':
break
elif add_to_list == 'N':
this_prompt = '\t\tDo you want to set any more '+dict_desc+' attributes: '
any_more = input(this_prompt).upper()
if any_more == 'Y':
continue
elif any_more == 'N':
break
Опять же, моя цель состоит в том, чтобы вывести мои словари из моей программы и найти более эффективный способ их создания и управления, поскольку они постоянно меняются.
Я все еще хочу сохранить функциональность, позволяющую пользователю переходить к следующему словарю (категории).
Например, если пользователя спрашивают о языке и он определяет, что единственным применимым атрибутом является английский, он может ввести «YL», и это переместит его в словарь «Rhythm / Genre» вместо необходимости проходить через остаток от словаря song_language
.