理解列表并输出<generator object。<locals =“”>。<genexpr> at 0x000002C392688C78>

时间:2019-02-19 00:37:17

标签: python

这可能是一个简单的问题,但是我通常对理解表不满意。

我在这样的字典中有一些字典:

main_dict = {
 'a': { 
    'a1':[1,2,3,...], 
    'a2':[2,4,6,...] 
    }
 'b': {
    'b1':[0,2,4,...],
    'b2':[1,3,5,...] 
    }
 }

除了那些命令非常重要。

我想要的是将其添加到日志中(我正在使用记录器),但是我不想要所有数据,因为那样会使日志立即变得庞大,并且难以读取。因此,我尝试这样做是为了仅存储每个子字典的前10个条目:

self.logger.debug('Recieved: {}'.format(self.main_dict[x][i][:10] for x in self.main_dict.keys() for i in self.main_dict[x].keys()))

但是返回是一个对象:

  

'generator object.locals.genexpr at 0x000002C392688C78'

所以我对此进行了单独的测试:

main_dict = {
    'A':{
        'a1': [1,2,3],
        'a2': [4,5,6]
        },
    'B': {
        'b1': [0,2,4],
        'b2': [1,3,5]
        }
    }

print([main_dict[x][i][:2] for x in main_dict.keys() for i in main_dict[x].keys()])

它实际上打印:

  

[[1、2],[4、5],[0、2],[1、3]]

那我想念什么?

1 个答案:

答案 0 :(得分:1)

您错过了方括号:

self.logger.debug('Recieved: {}'.format([self.main_dict[x][i][:10] for x in self.main_dict.keys() for i in self.main_dict[x].keys()]))

方括号表示列表理解,括号表示生成器表达式。