Python 提取字典的一部分

来源:互联网 发布:ed是什么软件 编辑:程序博客网 时间:2024/06/04 19:16

Python如何按照规定的键值(key),提取出字典的一部分,即子字典 sub dictionary?
比如要从下面的字典里

{'A':1, 'B':2, 'C':3, 'D':4, 'E':5}

依据键值 key list

['C', 'E']

要得到这样的字典

{'C':3, 'E':5}

的结果。可以用以下方法:

方法一:用dict生成新字典

>>> base = {'A':1, 'B':2, 'C':3, 'D':4, 'E':5}>>> subkey = ['C', 'E']>>> dict([(key, base[key]) for key in subkey]){'C': 3, 'E': 5}>>> 

解析:

利用列表解析(list comprehension)按照指定的subkey构造出(key, value)对

[(key, base[key]) for key in subkey]

而这正是字典构造器dict的输入:

dict([(key1,value1), (key2, value2), ..., (keyn, valuen)])

这样就以指定的键值(key)形成了一个新的字典。

方法二:dictionary comprehension构造新字典

Python 2.7开始支持dictionary comprehension方法,用这种方法构造新字典,更简洁、易懂,例如:

>>> base = {'A':1, 'B':2, 'C':3, 'D':4, 'E':5}>>> subkey = ['C', 'E']>>> {key:base[key] for key in subkey} {'C': 3, 'E': 5}>>> {key:value for key,value in base.iteritems() if key in subkey}{'C': 3, 'E': 5}>>> 

解析:
list comprehension是python强大的表示法,而从Python 2.7开始,新支持了dictionary comprehension,只需要在花括号{}内用冒号表示区分key和value就能构造出一个新字典:

{key:value for key, value...}

原文链接:http://www.lfhacks.com/tech/subdictionary-python

0 0
原创粉丝点击