Срезы словаря в 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)