(Python初学者)代码仅适用于字典中的最后一行

时间:2017-10-12 06:37:09

标签: python dictionary

当我将此代码应用于字典时,循环仅适用于字典中的最后一个名称列表,循环将不适用于第一组或第二组名称...

def function(dictionary, name): 
    for i in dictionary:
        if name == dictionary[i][0]:
            result = "the first name is "+str(dictionary[i][0])+" the second name is "+dictionary[i][1]
        else:
            result = "False"
    print(result)
input("name")
function(dict, name)

我认为第3行存在问题,但我无法弄明白。 字典看起来像这样:

dict = {1: ['john','george'], 2: ['tim','eric'], 3: ['josh','logan']}

3 个答案:

答案 0 :(得分:0)

您应该使用它来迭代(循环)字典:

for keys, vals in your_dct.items():
    if name == vals[0]
      #your code here

答案 1 :(得分:0)

这将通过循环每次打印结果的值。在您的代码中,您只是在上一次循环中打印结果的值。因此,代码只适用于字典的最后一个元素。

def function(dictionary, name): 
    for i in dictionary:
        if name == dictionary[i][0]:
            result = "the first name is "+str(dictionary[i][0])+" the second name is "+dictionary[i][1]
            print(result)
        else:
            result = "False"
            print(result)

答案 2 :(得分:0)

您的代码包含一些错误,我在这里修复它们是您的工作代码:

dict1 = {1: ['john','george'], 2: ['tim','eric'], 3: ['josh','logan']}


def function(dictionary1, name):
    for key1,value1 in dictionary1.items():
        if name in value1:

            result = "the first name is "+value1[0]+" the second name is "+value1[1]
            return result

    return False

print(function(dict1, input("name")))

首先,因为您在dict中的值是列表所以请使用in运算符检查值中是否有名字,而不是==

其次,使用for key,value in dict.items():而不是索引

你在同一个流程中使用else return的第三件事就是如果你搜索“josh”#39;它将首先返回两个假,然后返回' logan'所以在代码中使用for循环外部的返回。