Itertools在Python中生成的奇怪的空列表

问题描述 投票:0回答:1

我有字典列表,我想使用itertools.groupby重新排列它,代码很简单:

from operator import itemgetter
sorted_animals = sorted(questions, key=itemgetter('intent'))
for key, group in itertools.groupby(sorted_animals, key=lambda x:x['intent']):
    print(key),
    print(list(group))
    questions_grouped.append({key: list(group)})
print("questions_grouped:", questions_grouped)
pprint(questions_grouped)

此代码有效,我得到了预期的结果,按字典分组的新字典,按以下方式打印:

greet
[{'intent': 'greet', 'text': 'Hi. Hi.'}, {'intent': 'greet', 'text': 'Hello'}]

但是,我真的很沮丧,如果我查看列表,并使用这些项目创建的列表,所有列表都为空!:假设简单的打印有效并且所有列表都必须包含内容,那真是太奇怪了。我使用Python 3.6.5,Anaconda

questions_grouped:
[{'greet': []},
 {'ask_family1': []},
 {'ask_family10': []},
 {'ask_family11': []},
 {'ask_family12': []},

如何解决?

python anaconda itertools
1个回答
0
投票

print(list(group))用于调试消耗了group,这是可迭代的。只需将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.