使用用户输入的值搜索字典键

时间:2017-07-20 20:15:48

标签: python python-3.x

对于这个程序我试图使用来自用户的输入搜索字典中的键,在这种情况下是字典'options1'。

'''
set up the dictionary with the information
---------------------------
these are the options for the user to input
'''

options1 = dict = {'1' : "blah",
            '2' : "blah?",
            '3' : "blah"}

options2 = dict = {'1':"blah",
            '2':"blah"}

options3 = dict = {1:"blah?",
            '2':"blah!"}

'''
these are the replies to the users inputs
'''

replies = dict = {'zero':"blah",
           'one':"blah",
           'two':"blah",
           'three':"'backs away slowly'"}

user_input = False          #setting the variable to false as default

class Choice:
    if user_input == False:         #checks to see if the variable 'user_input' is False. 
        print(replies["zero"])      #will then print the starting text
        print("------------------------------------")           #seperate line for easier reading
        print("---" + options1["1"] + " _ 1")           #prints the options for the reader
        print("---" + options1["2"] + " _ 2")           #prints the options for the reader
        print("---" + options1["3"] + " _ 3")           #prints the options for the reader
        reply = input("*type one of the numbers shown above to reply* ") #allows the user to input a number that reprisents an argument that they want to pass  

        if reply in dict.keys():    #checks to see if the number input by teh user is in the options1 dictionary.
            print('true')
        else:
            print('false')

这里我使用变量'reply'来检查字符串是否与options1字典中的键相同。例如,字符串'2'将与options1('2')键相同。

我希望代码打印文本为true以显示它可以找到密钥但是输出false以显示它无法找到密钥。

if reply in dict.keys():    #checks to see if the number input by teh user is in the options1 dictionary.
    print('true')
else:
    print('false')

不确定为什么会这样做。我已经尝试在dict.keys()中使用'options1 [reply]'坚果会给我一个错误“TypeError:'dict'对象不可调用”

任何帮助将不胜感激。

(同样为了澄清这个程序,假设他们可以选择回复给定对话的用户对话选项)

2 个答案:

答案 0 :(得分:0)

如果要检查其键,而不是dict

,则必须使用options1
if str(reply) in options1.keys():    #checks to see if the number input by teh user is in the options1 dictionary.
    print('true')
else:
    print('false')

答案 1 :(得分:0)

看起来你很遗憾在这里遇到了很多问题,但我会回答你提出的具体问题:

'字典'是python中Dictionary字典数据类型的名称,所以你要做的是使用类型名称而不是变量。有点像问str.index(' a')。你必须使用变量而不是类型。 取而代之:

if reply in dict.keys():
            print('true')
        else:
            print('false')

用这个:

if reply in options1.keys():
            print('true')
        else:
            print('false')

完全符合您的要求。这创建了字典键的迭代器,以及' in'关键字用于搜索。如果你尝试在基本字典类型上执行此操作,解释器将会混淆并崩溃(当我尝试运行它时它总是返回false)

此外,正如评论中所述,您可以随处执行此操作:

options1 = dict = {

这是不必要的和危险的。不建议使用与类型(或关键字)相同的变量名称。