什么是字典的良好搜索功能

时间:2015-04-17 10:36:47

标签: python

我一直在使用这个,但是每次我在添加第二个条目后进行搜索时它似乎不适用于多个条目,如果我尝试搜索第一个条目它出现第二个条目。什么是修复

        for i in range(len(gclients)):
            record = gclients[i]
            if record["Name"].lower() == search1:
                if record["Surname"].lower() == search2:
                    recordfoundc = True


            for k,v in record.iteritems():
                resname = record["Name"]
                resSurname = record["Surname"]
                resnum = record["Phone Number"]
                resjob = record["Job"]
                resaddress = record["Address"]
                resemID = record["Employee ID"]

        if recordfoundc:
            print"You have just found",resname,resSurname,resnum,resjob, resaddress, resemID
            recordfoundc =  False

        else:
            print "Client not found"

2 个答案:

答案 0 :(得分:2)

与代码相关:

for k,v in record.iteritems():if loop之后移动recordfoundc = True循环代码,因为当找到Employee时,只需要从records获取员工详细信息。

不需要for k,v in record.iteritems():声明,因为我们直接访问记录中的键和值,而我们在代码中没有使用变量kv

也可以使用 break 语句。

代码看起来像 - :

recordfoundc = False
for i in range(len(gclients)):
    record = gclients[i]
    if record["Name"].lower() == search1 and record["Surname"].lower() == search2:
        recordfoundc = True
        #- Get Details of Employee.
        resname = record["Name"]
        resSurname = record["Surname"]
        resnum = record["Phone Number"]
        resjob = record["Job"]
        resaddress = record["Address"]
        resemID = record["Employee ID"]

        break

if recordfoundc:
    print"You have just found",resname,resSurname,resnum,resjob, resaddress, resemID
else:
    print "Client not found"

Python允许使用andor关键字在 if循环中编写多个条件

演示:

>>> a = 1
>>> b = 2
>>> c = 3
>>> if a==1 and b==2 and c==3:
...   print "In if loop"
... 
In if loop
>>> 

休息声明

当满足任何条件时,使用break语句退出。

在我们的情况下,当员工的名字和姓氏在记录中匹配时,则无需签入其他记录项。

演示for loopi的值为3

>>> for i in range(5):
...    print i
...    if i==3:
...       print "Break for loop."
...       break
... 
0
1
2
3
Break for loop.

如何从字典中获取价值。

演示:

>>> record = {"name": "test", "surname":"test2", "phone":"1234567890", "Job":"Developing"}
>>> record["name"]
'test'
>>> record["surname"]
'test2'
>>> record["Job"]
'Developing'
>>> 

答案 1 :(得分:0)

您的打印输出在完成for循环后发生,因此您的结果变量只是您编写的最后一个(并且只有在记录匹配时才需要写入,如注释中所指出的)。您需要在for内打印或将结果添加到列表中以便稍后打印。和/或按照建议,如果你只想要第一场比赛,那么从循环中断。