说,我有一个数据字典及其变量名称,例如
dct = {'a': 1, 'b': 2, 'c':3}
我希望检索与键子集关联的值。如何在不编码太多的情况下执行此操作,即逐个提取变量?有什么像
a, c = dct['a','c']
答案 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)
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)