展开字典的快捷方式

时间:2013-06-07 21:42:10

标签: python dictionary

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

dct = {'a': 1, 'b': 2, 'c':3}

我希望检索与键子集关联的值。如何在不编码太多的情况下执行此操作,即逐个提取变量?有什么像

a, c = dct['a','c']

5 个答案:

答案 0 :(得分:4)

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

>>> 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没有问题,而且使用它通常要简单得多:

>>> a, c = operator.itemgetter('a', 'c')(d)

答案 1 :(得分:1)

出于教育目的:

>>> d = {'a':1,'b':2,'c':3}
>>> globals().update((k, d[k]) for k in ('a', 'c'))
>>> a
1
>>> c
3

然而从不实际使用类似

的内容

答案 2 :(得分:1)

你几乎拥有它:p

>>> a, c = dct['a'], dct['c']
>>> a
1
>>> c
3

请不要将dict用作变量名称:)。它已经是一个内置的类型和功能,所以你只是重写它:p。

答案 3 :(得分:1)

operator.itemgetter对于此

非常方便
d = {'a':1,'b':2,'c':3}
from operator import itemgetter
a, c = itemgetter('a', 'c')(d)
print a, c
1 3

答案 4 :(得分:1)

喜欢功能风格?

>>> d = {'a':1,'b':2,'c':3}

>>> a, c = map(d.get, ('a','c'))
>>> a, c
(1, 3)