5

为什么调用 .pop() 时空集和列表会引发不同的异常?

>>> l = []
>>> l.pop()
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    l.pop()
IndexError: pop from empty list
>>> l = set()
>>> l.pop()
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    l.pop()
KeyError: 'pop from an empty set'
4

2 回答 2

7

因为sets很像dicts 但没有值:

>>> d = {}
>>> d.pop('foo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'pop(): dictionary is empty'

字典和集合都没有索引,就像列表一样,所以IndexError这里没有意义。但就像字典一样,集合中的每个“键”只有一个值。

于 2013-03-03T21:40:18.197 回答
7

列表是有序序列,按索引访问;集合是无序且非顺序的,可以通过键访问,因此会出现错误消息。

于 2013-03-03T21:40:32.153 回答