说,我有一个数据字典及其变量名,例如
dct = {'a': 1, 'b': 2, 'c':3}
我想检索与键子集关联的值。如何在不编码太多的情况下做到这一点,即逐个提取变量?有没有类似的东西
a, c = dct['a','c']
说,我有一个数据字典及其变量名,例如
dct = {'a': 1, 'b': 2, 'c':3}
我想检索与键子集关联的值。如何在不编码太多的情况下做到这一点,即逐个提取变量?有没有类似的东西
a, c = dct['a','c']
您可以为此使用生成器表达式:
>>> d = {'a':1,'b':2,'c':3}
>>> a, c = (d[key] for key in ['a', 'c'])
>>> a
1
>>> c
3
如果您经常这样做以至于值得将其包装在一个函数中,那将是微不足道的:
>>> def multiget(mapping, *keys):
... return (d[key] for key in keys)
>>> a, c = multiget(d, 'a', 'c')
然而,如果你仔细看,你会发现它multiget
只是operator.itemgetter
uncurried,而且使用它通常要简单得多:
>>> a, c = operator.itemgetter('a', 'c')(d)
出于教育目的:
>>> d = {'a':1,'b':2,'c':3}
>>> globals().update((k, d[k]) for k in ('a', 'c'))
>>> a
1
>>> c
3
但是永远不要真正使用这样的东西
你几乎拥有它:p
>>> a, c = dct['a'], dct['c']
>>> a
1
>>> c
3
请不要dict
用作变量名:)。它已经是一个内置类型和函数,所以你刚刚覆盖了它:p。
d = {'a':1,'b':2,'c':3}
from operator import itemgetter
a, c = itemgetter('a', 'c')(d)
print a, c
1 3
喜欢实用风格?
>>> d = {'a':1,'b':2,'c':3}
>>> a, c = map(d.get, ('a','c'))
>>> a, c
(1, 3)