展开字典的快捷方式

Jan*_*Jan 1 python dictionary

假设我有一个数据字典及其变量名称,例如

dct = {'a': 1, 'b': 2, 'c':3}
Run Code Online (Sandbox Code Playgroud)

我想检索与键子集关联的值。我怎样才能做到这一点而不需要编写太多代码,即逐一提取变量?有没有类似的东西

a, c = dct['a','c']
Run Code Online (Sandbox Code Playgroud)

aba*_*ert 5

您可以为此使用生成器表达式:

>>> d = {'a':1,'b':2,'c':3}
>>> a, c = (d[key] for key in ['a', 'c'])
>>> a
1
>>> c
3
Run Code Online (Sandbox Code Playgroud)

如果你经常这样做,值得将其封装在一个函数中,那就很简单了:

>>> def multiget(mapping, *keys):
...     return (d[key] for key in keys)
>>> a, c = multiget(d, 'a', 'c')
Run Code Online (Sandbox Code Playgroud)

然而,如果你仔细观察,你会发现它multiget只是operator.itemgetter未柯里化的,而且使用它通常要简单得多:

>>> a, c = operator.itemgetter('a', 'c')(d)
Run Code Online (Sandbox Code Playgroud)