我们如何从列表中获取<generator object =“”。<locals =“”>。<genexpr>数据?

时间:2018-06-19 10:39:19

标签: python python-3.x list-comprehension

testdict = {'1':[1,1],'2':[2,2]}
test = []
for i in testdict:
    test.append(k for k in i)

如果我们为当前场景打印test,我们会得到类似 -

的输出

[<generator object <genexpr> at 0x7f8216183d00>, <generator object <genexpr> at 0x7f82161090f8>]

我们如何获得实际数据?我们可以附加一个列表理解吗?

1 个答案:

答案 0 :(得分:0)

当您追加生成器表达式时,如果要迭代生成器表达式,则不会附加提取的值。您只是附加了惰性迭代器对象。

您最想要做的是从词典中提取所有值。您可以使用itertools.chain执行此操作,而无需使用明确的for循环:

from itertools import chain

testdict = {'1': [1,1], '2': [2,2]}

res = list(chain.from_iterable(testdict.values()))

print(res)
[1, 1, 2, 2]

请注意,字典项不被视为有序(除非您使用的是Python 3.7+)。因此,您应该考虑使用OrderedDictsorted(testdict.items())来定义输入的顺序。