如何将Python字典中存储的分词句子值拼接为单个列表?
报错原因
你写的代码存在两个核心问题:
- 嵌套了多层生成器,
join方法仅支持接收字符串组成的可迭代对象,你传入的是嵌套结构的生成器,自然会报类型错误 - 你的需求是输出单词组成的列表,而
join方法的作用是把字符串序列拼接为单个字符串,从功能上就不符合你的需求
实现代码
方法1:列表推导式(最简洁易读)
直接用三层嵌套的列表推导式遍历所有层级的元素即可:
all_words = [word for key in dict1 for sentence in dict1[key] for word in sentence]
推导式的遍历顺序和普通嵌套for循环完全一致:先遍历字典的所有键,再遍历每个键对应值里的所有分词句子,最后遍历每个句子里的所有单词,将单词依次收集到新列表中。
方法2:使用itertools.chain(适合处理超大规模数据)
如果数据量很大,用itertools的链式展开性能更高:
from itertools import chain all_words = list(chain.from_iterable(chain.from_iterable(dict1.values())))
这里先通过dict1.values()拿到字典所有值,第一层chain.from_iterable把值列表里的句子列表展开为所有句子的迭代器,第二层再把每个句子展开为单词迭代器,最后转成列表即可。
内容的提问来源于stack exchange,提问作者user14994313
相关产品推荐
相关产品推荐

