我试着像这样切分OrderedDict:
for key in some_dict[:10]:
但是我得到了一个TypeError,上面写着“不可散列的类型:‘切片’”。如何获得这个字典的前10个键值对?
发布于 2020-12-30 00:40:44
尝试将OrderedDict转换为可切分的内容:
list_dict = list(some_dict.items())
for i in list_dict[:10]:
# do something现在,每个键-值对都是一个包含两项的元组。(索引0是key,索引1是value)
发布于 2020-12-30 00:53:50
OrderedDict仅用于维护顺序,而不是按顺序提供高效的查找。(在内部,它们使用双向链表来维护顺序。)OrderedDicts不能提供有效的通用情况切片,因此它们不实现切片。
对于您的用例,您可以使用itertools在10个元素之后停止循环:
import itertools
for key in itertools.islice(your_odict, 0, 10):
...或
for key, value in itertools.islice(your_odict.items(), 0, 10):
...在内部,一旦到达第10个项,islice就会停止从底层OrderedDict迭代器获取项。请注意,虽然您可以告诉islice使用步长值或非零的起始值,但它不能有效地这样做-它将不得不获取并丢弃您想要跳过的所有值,以获得您感兴趣的值。
https://stackoverflow.com/questions/65495537
复制相似问题