我有一个字典,并希望将其中的一部分传递给函数,该部分由一个键列表(或元组)提供。像这样:
# the dictionary
d = {1:2, 3:4, 5:6, 7:8}
# the subset of keys I'm interested in
l = (1,5)
现在,理想情况下,我希望能够这样做:
>>> d[l]
{1:2, 5:6}
... 但这不起作用,因为它会寻找一个键匹配元组 (1,5)
,与 d[1,5]
相同。
d{1,5}
甚至不是有效的 Python (据我所知... ...) ,尽管它可能很方便: 大括号表示一个无序集或字典,因此返回包含指定键的字典对我来说非常合理。
d[{1,5}]
也有意义(“这里有一组键,给我匹配的项”) ,而且 {1, 5}
是一个不可散列的集合,所以不可能有一个与之匹配的键——当然,它也会抛出一个错误。
我知道我能做到:
>>> dict([(key, value) for key,value in d.iteritems() if key in l])
{1: 2, 5: 6}
或者这样:
>>> dict([(key, d[key]) for key in l])
这样更紧凑 但我觉得一定有更好的方法,我是不是错过了一个更优雅的解决方案?
(我使用的是 Python 2.7)