为什么我在raw_input为空时获取所有字典键

时间:2018-01-17 16:22:41

标签: python dictionary

当我按Enter键输入raw_input(“select:”)时,我会得到所有字典键。为什么我明白了?我怎样才能避免这个问题?

dict={"tony":1,"jack":2,"apple":3}
search = raw_input("select: ")
number = 1
for i in dict.keys():
            if search in i:
                print number, i
                number +=1

5 个答案:

答案 0 :(得分:0)

要避免:

if search in i and search != '':

答案 1 :(得分:0)

当你输入 nothing 时,search将是一个空字符串,任何字符串都包含一个空字符串,这就是为什么search == '',然后{{} 1}}表示所有字符串search in i == True

答案 2 :(得分:0)

问题为什么?有一个答案:它是因为每个字符串的空字符串''in

我认为您可以在代码中尝试完全相同:

 if search == i :

答案 3 :(得分:0)

您可以检查字符串是否为空,如果是,请不要运行字典搜索。 Python将空字符串计算为False,可在此处使用:

dict={"tony":1,"jack":2,"apple":3}
search = raw_input("select: ")
number = 1
if search:
   for i in dict.keys():
      if search in i:
         print number, i
         number +=1

答案 4 :(得分:0)

空字符串是其自身或任何其他字符串的子字符串。

>>> ''.find('')
0

Membership test operations

  

空字符串始终被视为任何其他字符串的子字符串,因此"" in "abc"将返回True

>>> '' in "tony"
True
>>> all('' in name for name in ["tony", "jack", "apple"])
True
>>> search = raw_input("select: ")
select: 
>>> print search

>>> type(search)
<class 'str'>
>>> len(search)
0
>>> '' in search # empty string
True
>>> search == ''
True

这就是为什么即使search有一个空字符串,你的代码也会打印字典键。

您可能需要执行if search in i:

而不是if search == i: