0

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

我正在尝试在 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))

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

4

1 回答 1

2

dict.pop()文档中:

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)
于 2014-09-01T09:32:54.307 回答