将列表插入集合后,集合仅包含列表中的项目,而不包含列表中的项目

2024-06-25 23:51:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从列表列表中筛选出唯一的项,并尝试了以下操作:

数据:sent_list = [['cleverness', 'wit'],['the', 'best', 'story'],['best', 'story'],['wit']]

我试过:

word_set = set()
for sent in sent_list:
    for word in sent:
        word_set.update(word)

word_set

产出为:

{'b', 'c', 'e', 'h', 'i', 'l', 'n', 'o', 'r', 's', 't', 'v', 'w', 'y'}

但预期的代码和结果是:

word_set = set()
for sent in sent_list:
    word_set.update(sent)
word_set

{'best', 'cleverness', 'story', 'the', 'wit'}

我使用第一个“for”循环访问主列表中的每个子列表,然后使用第二个“for”循环访问子列表中的每个单词,但似乎我的理解是错误的。另外,在正确的代码中,如果列表直接更新为set,set应该包含列表,不是吗? 请帮助我理解这个概念


Tags: the数据代码in列表forupdatelist
2条回答

您应该使用“add”方法只向列表中添加一个元素“更新”方法添加多个元素。这就是它将字符串视为字符数组的原因。正确的代码是

word_set = set()
for sent in sent_list:
    word_set.update(sent)
word_set

这里使用的正确方法是set.add(word)not set.update(word)

相关问题 更多 >