2017-08-24 56 views
-4

我有这样的数据格式:除以字典成特定部分

{0: {'offer_id': u'308249', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 1: {'offer_id': u'308255', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 2: {'offer_id': u'283063', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 3: {'offer_id': u'313467', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 4: {'offer_id': u'313673', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 5: {'offer_id': u'324519', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 6: {'offer_id': u'320501', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 7: {'offer_id': u'320503', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 8: {'offer_id': u'323593', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 9: {'offer_id': u'323595', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 10: {'offer_id': u'324441', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 11: {'offer_id': u'324443', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 12: {'offer_id': u'325129', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 13: {'offer_id': u'325131', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 14: {'offer_id': u'325133', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 15: {'offer_id': u'325135', 'affiliate_id': u'1014', 'approval_status': 'approved'}} 

我需要一次仅处理10类型的字典所以 我需要划分这个字典成部分,使得每个子部分可以有最多10个元素(键/值对)

API调用我需要使这种格式最多可以取10个值,所以我需要按部分来处理零件。

例子:

for data in data_in_chunks_of_10: 
    api_call(data) 

如何做到这一点有效?

+1

你尝试过什么那效率不够高? –

+0

关于如何在结果字典中分配密钥的任何要求? – MSeifert

+0

这个问题对我来说很不清楚。 –

回答

1

你可以使用一个发电机返回数据块在你需要的块大小如下:

def blocks(data, n=10): 
    for i in xrange(0, len(data), n): 
     yield data[i:i+n] 

data = { 
    0: {'offer_id': u'308249', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    1: {'offer_id': u'308255', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    2: {'offer_id': u'283063', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    3: {'offer_id': u'313467', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    4: {'offer_id': u'313673', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    5: {'offer_id': u'324519', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    6: {'offer_id': u'320501', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    7: {'offer_id': u'320503', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    8: {'offer_id': u'323593', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    9: {'offer_id': u'323595', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    10: {'offer_id': u'324441', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    11: {'offer_id': u'324443', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    12: {'offer_id': u'325129', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    13: {'offer_id': u'325131', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    14: {'offer_id': u'325133', 'affiliate_id': u'1014', 'approval_status': 'approved'}, 
    15: {'offer_id': u'325135', 'affiliate_id': u'1014', 'approval_status': 'approved'}} 

for block in blocks(data.items(), 10): 
    print block  

这会给你两个数据块如下:

[(0, {'offer_id': u'308249', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (1, {'offer_id': u'308255', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (2, {'offer_id': u'283063', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (3, {'offer_id': u'313467', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (4, {'offer_id': u'313673', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (5, {'offer_id': u'324519', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (6, {'offer_id': u'320501', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (7, {'offer_id': u'320503', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (8, {'offer_id': u'323593', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (9, {'offer_id': u'323595', 'affiliate_id': u'1014', 'approval_status': 'approved'})] 
[(10, {'offer_id': u'324441', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (11, {'offer_id': u'324443', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (12, {'offer_id': u'325129', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (13, {'offer_id': u'325131', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (14, {'offer_id': u'325133', 'affiliate_id': u'1014', 'approval_status': 'approved'}), (15, {'offer_id': u'325135', 'affiliate_id': u'1014', 'approval_status': 'approved'})]