你如何获得Python OrderedDict中的前3个元素?

时间:2015-05-15 02:45:57

标签: python dictionary ordereddictionary

如何获得Python OrderedDict中的前3个元素?

还可以从此词典中删除数据。

例如:我如何获得Python OrderedDict中的前3个元素并删除其余元素?

3 个答案:

答案 0 :(得分:20)

让我们创建一个简单的OrderedDict

>>> from collections import OrderedDict
>>> od = OrderedDict(enumerate("abcdefg"))
>>> od
OrderedDict([(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g')])

分别返回前三个

>>> list(od)[:3]
[0, 1, 2]
>>> list(od.values())[:3]
['a', 'b', 'c']
>>> list(od.items())[:3]
[(0, 'a'), (1, 'b'), (2, 'c')]

删除除前三项之外的所有内容:

>>> while len(od) > 3:
...     od.popitem()
... 
(6, 'g')
(5, 'f')
(4, 'e')
(3, 'd')
>>> od
OrderedDict([(0, 'a'), (1, 'b'), (2, 'c')])

答案 1 :(得分:3)

您可以使用此迭代方法完成工作。

x = 0
for i in ordered_dict:
    if x > 3:
        del ordered_dict[i]
    x += 1

首先,您只需创建一个计数器变量x,并将其指定为0.然后循环遍历ordered_dict中的键。通过查看x大于3(即您想要的值的数量),您可以看到已检查了多少项。如果已经检查了3个项目,则del会从ordered_dict中获取该项目。

这是一种更清洁的替代方法(感谢评论)

for i, k in enumerate(ordered_dict):
    if i > 2:
        del ordered_dict[k]

这可以通过使用枚举为每个键分配一个数字来实现。然后检查该数字是否小于2(0,1或2)。如果数字不是0,1或2(这些将是前三个元素),那么字典中的该项将被删除。

答案 2 :(得分:2)

与其他决定没什么不同:

d = OrderedDict({ x: x for x in range(10) })

i = d.iteritems()
a = next(i)
b = next(i)
c = next(i)

d = OrderedDict([a,b,c])
# or
d.clear()
d.update([a,b,c])