从字典中提取键值对的子集?

问题描述

你可以试试:

dict((k, bigdict[k]) for k in ('l', 'm', 'n'))

…或在 蟒蛇 3 Python 2.7 或更高版本 (感谢 F谩bio Diniz指出它也适用于 2.7)

{k: bigdict[k] for k in ('l', 'm', 'n')}

_更新:正如指出的那样,我假设您知道键将在字典中 -如果您无法做出该假设,请参阅他的答案。

至少短一点:

wanted_keys = ['l', 'm', 'n'] # The keys you want
dict((k, bigdict[k]) for k in wanted_keys if k in bigdict)

或者,在评论中指出的那样,如果您想要一个缺少的键bigdict映射到None,您可以执行以下操作:_

{k: bigdict.get(k, None) for k in ('l', 'm', 'n')}

如果您使用的是 Python 3,并且您 希望新 dict 中实际存在于原始字典中的键,则可以使用该事实来查看对象实现一些集合操作:

{k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}

解决方法

我有一个大字典对象,它有几个键值对(大约 16 个),但我只对其中 3 个感兴趣。实现这一目标的最佳方式是什么(最短/高效/最优雅)?

我知道的最好的是:

bigdict = {'a':1,'b':2,....,'z':26} 
subdict = {'l':bigdict['l'],'m':bigdict['m'],'n':bigdict['n']}

我相信有比这更优雅的方式。