我有一本字典:
keys = [1., 2., 3., 4., 5.]
values = [0.8, 0.8, 0.6, 0.0, .25]
dic = dict(zip(keys, values))
如果第一个字典的值也在列表中,则希望创建一个仅包含第一个字典中的键和值的子字典。
list = [ 1., 0.8, 0.8, 0.4, 0.0]
我希望子词典是:
subdic = {1.:0.8, 2.:0.8, 4.:0.0}
我将不胜感激任何帮助!谢谢!
我有一本字典:
keys = [1., 2., 3., 4., 5.]
values = [0.8, 0.8, 0.6, 0.0, .25]
dic = dict(zip(keys, values))
如果第一个字典的值也在列表中,则希望创建一个仅包含第一个字典中的键和值的子字典。
list = [ 1., 0.8, 0.8, 0.4, 0.0]
我希望子词典是:
subdic = {1.:0.8, 2.:0.8, 4.:0.0}
我将不胜感激任何帮助!谢谢!
使用字典理解:
>>> dic = dict(zip(keys, values))
>>> lis = [ 1., 0.8, 0.8, 0.4, 0.0]
>>> {k:v for k,v in dic.items() if k in lis or v in lis}
{1.0: 0.8, 2.0: 0.8, 4.0: 0.0}
use dict()
对于带有生成器表达式的Python 2.6 或更早版本:
>>> dict((k,v) for k,v in dic.items() if k in lis or v in lis)
{1.0: 0.8, 2.0: 0.8, 4.0: 0.0}
在 Python 2 中,您可以使用dict.iteritems()
它,因为它返回一个迭代器。dict.items()
将适用于两个版本。
每当您想基于过滤器构建字典时,请使用字典推导:
subdic = {k: v for k, v in dic.iteritems() if k in lst or v in lst}