Python 使用字典作为用户输入的答案键

Python 使用字典作为用户输入的答案键,python,dictionary,Python,Dictionary,这意味着只有当用户输入字典中的文件扩展名时,才会中断循环: def ext_input(): ext_dict = {'doc', 'docx', 'pdf', 'rtf', 'txt', 'wps', 'csv'} while True: print('Enter the file extension (.pdf, .txt, etc..) type "help" for a list of extensions') fileExt = inpu

这意味着只有当用户输入字典中的文件扩展名时,才会中断循环:

def ext_input():
    ext_dict = {'doc', 'docx', 'pdf', 'rtf', 'txt', 'wps', 'csv'}
    while True:
        print('Enter the file extension (.pdf, .txt, etc..) type "help" for a list of extensions')
        fileExt = input()
        if fileExt == "help":
            print(ext_dict)
            return
        elif fileExt != ext_dict:
            print('Please enter a correct file extension (.pdf, .txt, etc..) type "help" for a list of extensions')
        else:
            print("\"%s\" has been selected" % fileExt)
            break

对于python来说还是比较新的,任何指向正确方向的指针都非常好

您的
ext_dict
应该是一个列表,而不是一个字典(它不是字典,请参见Bruno的答案),它允许修改以下代码:

def ext_input():
    ext_dict = ['doc', 'docx', 'pdf', 'rtf', 'txt', 'wps', 'csv']
    while True:
        print('Enter the file extension (.pdf, .txt, etc..) type "help" for a list of extensions')
        fileExt = input()
        if fileExt == "help":
            print(ext_dict)
            return
        elif fileExt not in ext_dict:
            print('Please enter a correct file extension (.pdf, .txt, etc..) type "help" for a list of extensions')
        else:
            print("\"%s\" has been selected" % fileExt)
            break

首先,您的
帮助命令
不是
命令
,而是
集合

第二:你在比较一个字符串和一个集合——当然,这个集合永远不会相等。测试一个集合是否包含一个元素是通过操作符中的
来完成的,如果myset中有某个东西:
——对于不明显的情况,您只需在中使用
而不是。瞧,你想要:

elif fileExt not in ext_dict:
   # XXXX

你能澄清一下你的问题是什么吗?它不是一个dict,实际上,它是一个set,因此是用于快速包容测试的正确类型-
elt in set
是O(1),而
elt in list
是O(n)。是的,但我的回答是基于这样一个假设,即他确实认为
ext_dict
是一本字典;-)不过,感谢您提供的详细信息,我想知道使用列表或集合是否会带来性能成本。当然,这在这里没有任何真正的影响,这个列表很小,但很高兴知道这一点!我会修正我的答案。谢谢我知道事情就这么简单,你知道的越多!谢谢