我有一个包含数千个元素的非常大的字典.我需要用这个字典作为参数执行一个函数.现在,我不是在一次执行中传递整个字典,而是希望批量执行该函数 - 一次使用字典的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)
这对我来说非常讨厌.我想知道是否有一种优雅/更好的方式来做到这一点.
我经常使用这个小工具:
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)
归档时间: |
|
查看次数: |
2207 次 |
最近记录: |