【问题标题】:Python:Error while trying to sort a set alphabeticallyPython:尝试按字母顺序对集合进行排序时出错
【发布时间】:2019-08-20 16:04:57
【问题描述】:

我正在尝试按字母顺序对集合进行排序。这是我正在使用的语句:

for sentence in corpus:
    allword=allword.union(set(sentence.split(' ')))
    allword=sorted(allword)

我收到一个错误“'list' object has no attribute 'union'”。但是,如果我删除要排序的代码,我不会收到此错误。也就是说,代码在这种情况下完全可以工作:

allword=allword.union(set(sentence.split(' ')))

但是当我添加第二行时,我得到了错误。 有人可以帮我理解为什么会出现这种奇怪的行为吗?我哪里错了?提前致谢

【问题讨论】:

  • sorted 返回一个列表。但是,如果您仍然使用集合,为什么需要排序?套装没有排序。
  • 你是在循环调用这些命令吗?开头allwordset,然后sorted()会变成allwordlist。第二次迭代你会得到错误 - 列表没有union() 方法。
  • 我需要按字母顺序获取这个集合的内容。
  • @andrej 是的..我正在循环调用

标签: python list set python-3.6


【解决方案1】:

如 cmets 中所述,您在循环中调用这些命令:开始时设置了 allword,然后 sorted() 将更改 allword 为列表。第二次迭代你会得到错误 - 列表没有 union() 方法。

解决方案是从循环中删除sorted(),只在最后执行一次:

corpus = [
    'I am trying to sort a set alphabetically',
    'This is the statement I am using'
]


allword = set()

for sentence in corpus:
    allword=allword.union(sentence.split(' '))

print( sorted(allword) )

打印:

['I', 'This', 'a', 'alphabetically', 'am', 'is', 'set', 'sort', 'statement', 'the', 'to', 'trying', 'using']

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 2019-04-21
    • 2022-10-07
    • 2011-08-29
    • 2019-11-22
    • 2010-10-26
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    相关资源
    最近更新 更多