.pop()字典错误

时间:2014-09-01 09:31:33

标签: python dictionary stack python-2.2

我试图在很长一段时间内寻找这个问题的答案。 我到处尝试过,但可能是我用错误的关键字搜索,如果有的话,请原谅我提出一个愚蠢或已经回答的问题。

我想在python 2.2中弹出字典。 以下是我尝试运行的代码片段:

ABRA= {}
ABRA[0] = ['MENU', ['TV', 'MENU']]
ABRA[1] = ['TV', 'PC', ['RM', 'LM']]
count = 0
KADABRA = ABRA.pop(count).pop()
print(str(KADABRA))
print(len(KADABRA))
count += 1
KADABRA = ABRA.pop(count)
print(str(KADABRA))

当我在像Codepad这样的在线翻译中输入此代码时,它可以工作,我得到了所需的输出,当我在我希望它运行的服务器上运行时,它没有。 我收到以下错误:

  

AttributeError('dict'对象没有属性'pop')。

我没有看到代码中的错误,或者我调用pop的方式。 我甚至试图删除'双'流行音乐。 仍然是一个错误。 如果我只是把它作为一个列表而不是像这样的字典:

ABRA = ['MENU', ['TV', 'MENU']]
KADABRA = ABRA.pop()
print(str(KADABRA))
print(len(KADABRA))

然后它工作,我得到正确的打印。 但我不想要列表,而是一个字典。 我看过弹出dicts的例子。 所以我的问题是为什么我不能在我的服务器上弹出dict和/或是否有替代弹出dicts?

1 个答案:

答案 0 :(得分:2)

来自dict.pop() documentation

  

2.3版中的新功能。

换句话说,Python 2.2中没有这样的方法。

您可以使用以下方式自行实现:

_sentinel = object()

def pop_dict(d, k, default=_sentinel):
    try:
        v = d[k]
        del d[k]
        return v
    except KeyError:
        if default is _sentinel:
            raise
        return default

将此用作:

pod_dict(ABRA, count)