gpt4 book ai didi

python - 字典切片

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:45 25 4
gpt4 key购买 nike

我有一本字典,并且想将其一部分传递给函数,该部分由键列表(或元组)给出。就像这样:

# 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)

最佳答案

在 Python 3 上,您可以使用 itertools islice 来切片 dict.items() 迭代器

import itertools

d = {1: 2, 3: 4, 5: 6}

dict(itertools.islice(d.items(), 2))

{1: 2, 3: 4}

注意:此解决方案考虑特定键。它按照 d 的内部顺序进行切片,在 Python 3.7+ 中保证是插入顺序的。

关于python - 字典切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55148606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com