如何迭代字典 - 一次n个键值对

nis*_*ish 3 python dictionary

我有一个包含数千个元素的非常大的字典.我需要用这个字典作为参数执行一个函数.现在,我不是在一次执行中传递整个字典,而是希望批量执行该函数 - 一次使用字典的x键值对.

我正在做以下事情:

mydict = ##some large hash
x = ##batch size
def some_func(data):
    ##do something on data
temp = {}
for key,value in mydict.iteritems():
        if len(temp) != 0 and len(temp)%x == 0:
                some_func(temp)
                temp = {}
                temp[key] = value
        else:
                temp[key] = value
if temp != {}:
        some_func(temp)
Run Code Online (Sandbox Code Playgroud)

这对我来说非常讨厌.我想知道是否有一种优雅/更好的方式来做到这一点.

geo*_*org 7

我经常使用这个小工具:

import itertools

def chunked(it, size):
    it = iter(it)
    while True:
        p = tuple(itertools.islice(it, size))
        if not p:
            break
        yield p
Run Code Online (Sandbox Code Playgroud)

对于您的用例:

for chunk in chunked(big_dict.iteritems(), batch_size):
    func(chunk)
Run Code Online (Sandbox Code Playgroud)