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

时间:2016-10-06 23:31:25

标签: python python-3.x

我试过这样做:

$ git merge develop~5

但它在TypeError中给出。 Func得到了意想不到的争论

3 个答案:

答案 0 :(得分:4)

两个主要问题:

  • 传递**参数不正确。只需通过字典; Python将处理引用。
  • 您尝试使用未初始化的变量名称引用位置。字母a / b / c是字典中的文字字符串。

代码:

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

num =  { "a": 1, "b": 2, "c": 2}
print(func(num))

现在,让我们尝试几个测试用例:一个带有& amp; 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}

答案 1 :(得分:4)

使用**将解压缩字典,在您的情况下,您应该只将num的引用传递给func,即

print(num(func))

(解包**相当于func(a=1,b=2,c=3)),例如

def func(arg1,arg2):
    return arg1 + arg2

args = {"arg1":3,"arg2":4}
print(func(**args))

答案 2 :(得分:1)

您可以这样操作,我不知道它为什么起作用,但它可以起作用

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_ ))