首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.pop()字典错误

.pop()字典错误
EN

Stack Overflow用户
提问于 2014-09-01 09:31:33
回答 1查看 344关注 0票数 0

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

我正试图在python2.2中弹出一本字典。下面是我试图运行的代码片段:

代码语言:javascript
复制
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的方式有什么错误。我甚至试着去掉“双”弹。还是个错误。如果我把它列成一个清单而不是像这样的白痴:

代码语言:javascript
复制
ABRA = ['MENU', ['TV', 'MENU']]
KADABRA = ABRA.pop()
print(str(KADABRA))
print(len(KADABRA))

然后我就能得到正确的指纹了。但我不想要一张名单,而是一个白痴。我见过一些用弹出来的例子。所以,我的问题是,为什么我不能在我的服务器上弹出这个数据集,或者,除了弹出数据集之外,还有其他的选择呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-01 09:32:54

来自 documentation

新版本2.3。

换句话说,Python2.2中没有这样的方法。

您可以通过以下方式自己实现这一点:

代码语言:javascript
复制
_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

将其用作:

代码语言:javascript
复制
pod_dict(ABRA, count)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25602790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档