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}

我将不胜感激任何帮助!谢谢!

4

2 回答 2

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}

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()将适用于两个版本。

于 2013-06-20T18:50:27.527 回答
1

每当您想基于过滤器构建字典时,请使用字典推导:

subdic = {k: v for k, v in dic.iteritems() if k in lst or v in lst}
于 2013-06-20T18:49:05.487 回答