how often does the letter "р" occur in:
q: разделить json на равные части с помощью python у меня есть большой json вида {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4',....etc}
мне нужно его разделить на равные части по 2 пары ключ-значение и положить их в разные файлы (т.е. файл1 - 'key1': 'value1', 'key2': 'value2', файл2 - 'key3': 'value3', 'key4': 'value4').
код ниже работает, но записывает в файл только ключи, т.е. на выходе ["key1", "key2"]. как записывать парами ключ-значение? и желательно в фигурных {}, а не квадратных скобках.
import json
from itertools import zip_longest

dashboard_lists = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}

def grouper(iterable, n, fillvalue=''):
    "collect data into fixed-length chunks or blocks"
    # grouper('abcdefg', 3, 'x') --> abc def gxx
    args = [iter(iterable)] * n
    print(args)
    return zip_longest(fillvalue=fillvalue, *args)

#print(type(dashboard_lists))

for i, group in enumerate(grouper(dashboard_lists, 2)):
    #print(group)
    with open('path_{}.json'.format(i), 'w') as outputfile:
        json.dump(list(group), outputfile)


a: ваша функция на выходе выдает список кортежей из ключей, разбитых по 2, плюс в конце еще и добавляется (' ') если ключей нечетное количество.
зачем так сложно.
используйте другую функцию для деления на части вашего словаря
import json

dashboard_lists = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4', 'key5': 'value5'}

def dict_chunks(dict_of, n):
    keys = list(dict_of.keys())
    for i in range(0, len(keys), n):
        yield {k: dict_of[k] for k in keys[i: i + n]}

потом можете пройтись по тому же циклу, что у вас уже есть, только из dump уберите list
json.dump(group, outputfile)

в файл не записывал, но если посмотреть что получается на выходе этого цикла с применением функции, что выше, то видим следующее
{"key1": "value1", "key2": "value2"}
{"key3": "value3", "key4": "value4"}
{"key5": "value5"}


a: нашел другой способ решить эту проблему:
from typing import list, dict
    res: list[dict] = []
    
tmp_res: dict = {}
for k, v in dashboard_lists.items():
    tmp_res[k] = v

    if len(tmp_res.keys()) > 2:
        res.append(copy.deepcopy(tmp_res))
        tmp_res = {}
if tmp_res:
    res.append(copy.deepcopy(tmp_res))
    i = 0
    for it in res:
        i += 1
        with open('paths_{}.js'.format(i), 'w', encoding='utf-8') as outputfile:
            json.dump(it, outputfile, ensure_ascii=false)


user
I counted twenty-one "р"s in that text.
assistant