【问题标题】:Automatically Unpack and Assign, Keys to Values from a Python Dictionary自动解包并分配 Python 字典中的键值
【发布时间】:2021-10-25 10:31:52
【问题描述】:

这个问题与here提出的问题类似:

但是在我的情况下,我有一个包含许多键和值的大型字典,我将无法枚举每个键来实现此解决方案:

from operator import itemgetter

params = {'a': 1, 'b': 2}
a, b = itemgetter('a', 'b')(params)

就我而言:

from operator import itemgetter

params = {'a': 1, 'b': 2 ........... 'y': 25, 'z': 26 }

a, b ..... y, z = itemgetter('a', 'b'.... 'y', 'z')(params)

有什么方法可以解压每个键并将其分配给它的值,并在其键之后将值与变量名大规模关联起来?

请指教。

# Function
a = 1
b = 2

def foo(z):
 return a + b + z

foo(3)

# should return 6

【问题讨论】:

  • 为什么在动态命名的变量中需要它们?您已经在dict 中拥有它们,因此您可以通过名称访问它们...
  • 我正在尝试解压缩并定义它们以将它们作为附加参数传递给只能接受一个参数的函数
  • 该参数应该是什么类型,元组还是列表?或者您想将它们一一传递给对所述函数的重复调用?
  • 这是actual issue 我正在尝试解决这个问题
  • 也许你应该就这个问题寻求帮助,因为我认为你走错路了

标签: python dictionary unpack


【解决方案1】:

要么将变量声明为输入参数,要么在调用中解压字典

def foo(z, a, b):
    return a + b + z 

param = {'a': 1, 'b': 2}

foo(3, **param)
>> 6

如果缺少任何输入,您还可以提供默认值(例如 0)。

另一种可能性是提供整个字典作为输入并让函数处理解包。

def bar(z, p):
     return p['a'] + p['b'] + z 

bar(3, param)
>> 6

【讨论】:

  • foo(z) 只能接受一个参数z
猜你喜欢
  • 2021-07-11
  • 2021-10-06
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多