Срезы словаря в Python

Можно ли в питоне как-то брать срезы словаря? Есть очень большой словарь, из которого я хочу в цикле брать, допустим, по 500 элементов. Если со списком это можно запросто сделать чем-то вроде этого:

for i in range(len(l)//500):
    _ = l[500*i:500*(i+1)]

то в случае со словарем появится ошибка:

TypeError: unhashable type: 'slice'

Появляется эта ошибка, я так понимаю, из-за того, что элементы словаря берутся по ключу. Как можно решить эту проблему?


Ответы (2 шт):

Автор решения: gil9red

Словари не поддерживают срезы. Нужно привести словарь к списку, тогда этот код сработает.

Попробуйте:

data = dict()
items = list(data.items())

for i in range(len(items)//500):
    _tmp = items[500*i:500*(i+1)]
→ Ссылка
Автор решения: strawdog

Вот еще такой вариант:

from operator import itemgetter

d = {x: x**2 for x in range(50)}
itemgetter(*range(40, 50))(d) # 40 и 50 - границы среза

(1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401)

→ Ссылка