我有一本字典:
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]
我希望subictionary为:
subdic = {1.:0.8, 2.:0.8, 4.:0.0}
我将不胜感激任何帮助! 谢谢!
答案 0 :(得分:3)
使用字典理解:
>>> 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}
对于带有生成器表达式的Python 2.6或更早版本use dict()
:
>>> 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()
适用于两个版本。
答案 1 :(得分:1)
每当您想要基于过滤器构建字典时,请使用字典理解:
subdic = {k: v for k, v in dic.iteritems() if k in lst or v in lst}