我尝试像这样切片 OrderedDict:
for key in some_dict[:10]:
但我得到一个 TypeError 说“不可散列的类型:'slice'”。如何获得这本字典的前 10 个键值对?
我尝试像这样切片 OrderedDict:
for key in some_dict[:10]:
但我得到一个 TypeError 说“不可散列的类型:'slice'”。如何获得这本字典的前 10 个键值对?
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):
...
在内部,islice
一旦到达第 10 个项目,它将停止从底层 OrderedDict 迭代器获取项目。请注意,虽然您可以告诉islice
使用步长值或非零起始值,但它不能有效地做到这一点 - 它必须获取并丢弃您想要跳过的所有值以获取您感兴趣的值。
尝试将其OrderedDict
转换为可切片的东西:
list_dict = list(some_dict.items())
for i in list_dict[:10]:
# do something
现在每个键值对都是一个包含两项的元组。(索引 0 是键,索引 1 是值)