【问题标题】:Using a dictionary as an answer key for user input使用字典作为用户输入的答案键
【发布时间】:2023-04-10 01:19:01
【问题描述】:

这意味着只有在用户输入字典中的文件扩展名时才跳出循环:

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 来说还是比较新的,任何指向正确方向的指针都会很棒

【问题讨论】:

  • 能否请您澄清一下您的问题是什么?

标签: python dictionary


【解决方案1】:

首先,您的help_dict 不是dict,而是set

第二:你将一个字符串与一个集合进行比较——当然永远不会比较相等。使用in 操作符:if something in myset: 来测试一个集合是否包含一个元素——对于非appartenance,您只需使用not in。 IOW,你想要:

elif fileExt not in ext_dict:
   # XXXX

【讨论】:

  • 我知道事情就是这么简单,你知道的越多!谢谢!
【解决方案2】:

您的 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

【讨论】:

  • 实际上它不是dict,而是set,因此是用于快速收容测试的正确类型 - elt in set 是 O(1),而 elt in list 是O(n)。
  • 是的,但我的回答是基于他确实认为ext_dict 是一本字典的假设;-) 但是,感谢您提供的详细信息,我想知道使用是否有性能成本一个列表或一组。当然,这在这里没有任何实际影响,列表是如此之小,但还是很高兴知道!将修改我的答案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多