我试图在很长一段时间内寻找这个问题的答案。 我到处尝试过,但可能是我用错误的关键字搜索,如果有的话,请原谅我提出一个愚蠢或已经回答的问题。
我想在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?
答案 0 :(得分:2)
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)