首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对OrderedDict进行切片?

如何对OrderedDict进行切片?
EN

Stack Overflow用户
提问于 2020-12-30 00:37:53
回答 2查看 154关注 0票数 0

我试着像这样切分OrderedDict:

for key in some_dict[:10]:

但是我得到了一个TypeError,上面写着“不可散列的类型:‘切片’”。如何获得这个字典的前10个键值对?

EN

回答 2

Stack Overflow用户

发布于 2020-12-30 00:40:44

尝试将OrderedDict转换为可切分的内容:

代码语言:javascript
复制
list_dict = list(some_dict.items())

for i in list_dict[:10]:
  # do something

现在,每个键-值对都是一个包含两项的元组。(索引0是key,索引1是value)

票数 2
EN

Stack Overflow用户

发布于 2020-12-30 00:53:50

OrderedDict仅用于维护顺序,而不是按顺序提供高效的查找。(在内部,它们使用双向链表来维护顺序。)OrderedDicts不能提供有效的通用情况切片,因此它们不实现切片。

对于您的用例,您可以使用itertools在10个元素之后停止循环:

代码语言:javascript
复制
import itertools

for key in itertools.islice(your_odict, 0, 10):
    ...

代码语言:javascript
复制
for key, value in itertools.islice(your_odict.items(), 0, 10):
    ...

在内部,一旦到达第10个项,islice就会停止从底层OrderedDict迭代器获取项。请注意,虽然您可以告诉islice使用步长值或非零的起始值,但它不能有效地这样做-它将不得不获取并丢弃您想要跳过的所有值,以获得您感兴趣的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65495537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档