Как вы получаете первые 3 элемента в Python OrderedDict?

Как вы получаете первые 3 элемента в Python OrderedDict?

также можно удалить данные из этого словаря.

например: как получить первые 3 элемента в Python OrderedDict и удалить остальные элементы?

3 ответов


давайте создадим простой 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')])

вы можете использовать этот итерационный метод, чтобы получить работу.

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

во-первых, вы просто делаете переменную счетчика,x, и присвоить ему значение 0. Затем вы проходите через клавиши в ordered_dict. Вы видите, сколько элементов были проверены, увидев его x больше 3-количество значений, которые вы хотите. Если 3 элемента уже были проверены, вы delete этот пункт из ordered_dict.


здесь более чистый, альтернативный метод (спасибо комментарии)

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

это работает с помощью enumerate для присвоения номера каждому ключу. Затем он проверяет, меньше ли это число двух (0, 1 или 2). Если число не равно 0, 1 или 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])