Python 如何将字典作为函数的参数传递,以及如何在函数中访问字典

Python 如何将字典作为函数的参数传递,以及如何在函数中访问字典,python,python-3.x,Python,Python 3.x,我试着这样做: def func(dict): if dict[a] == dict[b]: dict[c] = dict[a] return dict num = { "a": 1, "b": 2, "c": 2} print(func(**num)) 但它给出的是打字错误。 Func得到一个意外的参数a两个主要问题: 传递**参数是不正确的。把字典递给我;Python将处理引用。 您试图引用具有未初始化变量名的位置。字母a/b/c是字典中的文字字符串。

我试着这样做:

def func(dict):
    if dict[a] == dict[b]:
        dict[c] = dict[a]
    return dict

num =  { "a": 1, "b": 2, "c": 2}
print(func(**num))
但它给出的是打字错误。 Func得到一个意外的参数a

两个主要问题:

传递**参数是不正确的。把字典递给我;Python将处理引用。 您试图引用具有未初始化变量名的位置。字母a/b/c是字典中的文字字符串。 代码:

现在,让我们尝试几个测试用例:一个与a和b不同,一个匹配:

>>> letter_count =  { "a": 1, "b": 2, "c": 2}
>>> print(func(letter_count))
{'b': 2, 'c': 2, 'a': 1}

>>> letter_count =  { "a": 1, "b": 1, "c": 2}
>>> print(func(letter_count))
{'b': 1, 'c': 1, 'a': 1}

使用**将解包字典,在您的情况下,只需将num的引用传递给func,即

printfunnum

拆包**相当于funca=1、b=2、c=3,例如


你可以这样做我不知道为什么它会起作用但它只是起作用

gender_ = {'Male': 0, 'Female': 1}

def number_wordy(row, **dic):
   for key, value in dic.items() :
       if row == str(key) :
            return value
print(number_wordy('Female', **gender_ ))

首先将If改为If。第二,不要使用dict作为参数或变量名,它是一个内置的。第三,你为什么说func**num而不是funcnum?If是提问时的一个键入错误。作为一个新手,我不知道dict是保留键。关于使用**num,我试图遵循前面的堆栈溢出答案之一。可能重复:另外,最好指出使用dict作为名称通常是一个非常愚蠢的决定。嗨,eman,请在python程序中添加空格/制表符,因为空格/制表符语法在python中很重要。第一个应该是printfunnum,不是吗?
def func(arg1, arg2):
    return arg1 + arg2

args = {"arg1": 3,"arg2": 4}
print(func(**args))
gender_ = {'Male': 0, 'Female': 1}

def number_wordy(row, **dic):
   for key, value in dic.items() :
       if row == str(key) :
            return value
print(number_wordy('Female', **gender_ ))