Python 简化动态词典的创建和循环

Python 简化动态词典的创建和循环,python,dictionary,Python,Dictionary,我现在有一本字典,以大写字母为键,列表为值。该列表在[0]处有一个描述,在[1]处有一个指向另一个字典的变量名 categories = {'A': ('Song Language', song_language), 'B': ('Rythm/Genre', rythm_genre), 'D': ('Atributes', atributes), 'E': ('Region', region)

我现在有一本字典,以大写字母为键,列表为值。该列表在[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

这两本词典都没有定稿,这意味着我会不断更新它们以添加条目。必须:

  • 创建其他字典
  • 修改现有词典
字典的用途是循环使用它们。首先,循环遍历
类别
字典,以嵌套方式,我循环遍历列表[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”,这将使他们进入“节奏/体裁”词典,而不必阅读
宋_语言
词典的其余部分

我采纳了@BillS的建议,实现了一个包含两个表的数据库:

    import mysql.connector

    mydb = mysql.connector.connect(
      host='127.0.0.1',
      user='something',
      passwd='else',
      database='some_db'
    )

    mycursor = mydb.cursor(buffered=True)

    mycursor.execute("SELECT main, description FROM categories")
    main_categories = mycursor.fetchall()
    for letter, desc in main_categories:
      .
      .

您提到您希望将词典“移出我的程序”。那么,您是否正在寻找一种允许用户与前端交互并执行您所做的搜索类型的数据库?@BillS。虽然这是一个很好的选择,但这可能有点过头了,我应该用不同的方式来表达。我想将字典移到另一个模块或某种文件中。我认为从长远来看,CSV可能是最容易维护的。也许类似于?谢谢@xdze2的建议!