如何在Python中将字典键作为函数参数传递

时间:2018-07-16 01:26:43

标签: python function dictionary arguments

我是python和程序设计的初学者,我一直在尝试创建一个函数来检查给定键是否在字典中,然后重新运行布尔值。 This topic很有帮助,但没有解决我的函数参数问题。 我发现有许多主题与将字典作为参数传递给函数有关,但没有一个主题说明如何使用键来实现,而在here中找不到我特定问题的答案。

当我在主程序中使用代码时,它可以正常工作:

if "myKey" in myDict:
    answ = True
    print(myKey, " is there!")
else:
    answ = False
    print(myKey, " is not there.")

但是,尝试对其执行一个功能然后调用它不起作用,它也不会返回错误,什么也不会发生,也不会被打印出来。

def checkIfThere(myKey, myDict):
    #for i in myDict:
        if myKey in myDict:
            return True
            print(myKey, "is there!")
        else:
            return False
            print(myKey, "is not there.")

我曾尝试通过以下方式致电:

checkIfThere("thisIsAKey", myDict)
checkIfThere(thisIsAKey, myDict)
checkIfThere("\"thisIsAKey\"", myDict)

我想念什么? 将字典键作为参数传递给函数只是不可行吗?

3 个答案:

答案 0 :(得分:2)

问题在于,当函数遇到return语句时,它将停止执行,并将控制权返回给调用方。请注意,您也将丢弃返回值(因为未将调用结果分配给变量)。

考虑:

>>> def some_func(x):
...     return
...     print(x)
...
>>> y = some_func(42)

请注意,print函数从未运行过。

通常,应该让函数执行工作,并让调用者进行打印。因此,可以编写函数(以更简化的方式):

>>> def check_if_there(key, adict):
...     return key in adict
...
>>> is_in = check_if_there('a', {'b':2})
>>> print(is_in)
False

注意,此功能的职责只是检查字典中是否有键。在学习编程时,您会发现将功能拆分为可重用,可组合的部分很有用。因此,另一个功能可能具有打印的责任:

>>> def tell_if_there(key, adict):
...     if check_if_there(key, adict):
...         print(key, " is there!")
...     else:
...         print(key, " is not there.")
...
>>> tell_if_there('a', {'b':2})
a  is not there.
>>> tell_if_there('b', {'b':2})
b  is there!

答案 1 :(得分:0)

您的功能正常!

但是print语句应该在函数之外。试试这个。

1)定义不带打印语句的功能

def checkIfThere(myKey, myDict):  
    for i in myDict:  
        if myKey in myDict:  
            return True  
        else:  
            return False

这将返回True或False,具体取决于myKey是myDict的键之一。

2)然后,运行以下内容。

if checkIfThere(myKey, myDict):  
    print(myKey, " is there!")  
else:  
    print(myKey, " is not there.")

如果上面的函数返回True,则将打印myKey在哪里;否则myKey不存在。

谢谢。

答案 2 :(得分:0)

函数的问题是您要在打印任何内容之前从函数返回。

您可以从函数中删除return语句,以使其正常工作。