python提取字典中键值对,从Python字典对象中提取键值对的子集?

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

我所知道的是:

bigdict = {'a':1,'b':2,....,'z':26}

subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}

我相信还有比这更优雅的方式。思想?

您可以尝试:

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

…或在python 3python versions 2.7或更高版本中(感谢f_bio diniz指出它在2.7中也可以工作):

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

更新:作为H?瓦德指出,我假设你知道字典里会有钥匙,如果你不能做出这样的假设,就看看他的答案。或者,正如Timbo在评论中指出的那样,如果您想要一个在bigdict中丢失的键映射到None中,您可以这样做:

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

如果您使用的是python 3,并且只希望新dict中的键实际存在于原始dict中,那么您可以使用视图对象实现一些集合操作的事实:

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

如果bigdict不包含k将失败。

有点苛刻到投反对票-从上下文来看,我很清楚这些键在字典里…

@H&229;vard s:我认为从操作岗位上,我们可以假设所有给定的元素都在bigdict中。

@我做了一个评论,但没有投反对票,就像我对其他答案做的那样,没有检查钥匙是否存在。

"或在python 3"或"或在python中>=2.7"?

@H&229;Vard S:很抱歉得出这样的结论——有人投了反对票,但后来取消了。

哇,你现在能做到吗?我只是希望我的手机能从2.5.4升级…

{k: bigdict.get(k,None) for k in ('l', 'm', 'n')}将通过将新dict中的key设置为none来处理源字典中缺少指定密钥的情况。

谢谢,@timbo-我也在回答中加了一句,希望没问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值