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>]
我们如何获得实际数据?我们可以附加一个列表理解吗?
答案 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+)。因此,您应该考虑使用OrderedDict
或sorted(testdict.items())
来定义输入的顺序。