Python在Dictionary Valu中追加字典

2024-10-16 17:19:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是shelve模块,我有一些类别,比如说'A',B,'C',我有一些属于这些类别的文章我正在制作一个字典键是文章名称value是任意数字,在shelve模块中,当我附加它时,它说:

AttributeError: 'dict' object has no attribute 'append'

这是我的密码

indexDb = shelve.open('index.db')
if indexDb.has_key(linko.text.encode('UTF-8')):
    indexDb.setdefault(linko.text.encode('UTF-8'),{}).append(allArticle)
else:
    indexDb[linko.text.encode('UTF-8')] = allArticle

Tags: 模块text名称字典value文章类别utf
2条回答

该命令不是append,但您可以添加整个dict,如下所示:

dict1 = {'a':1, 'b':2}
dict2 = {'c':3, 'd':4}
dict3 = dict1.append(dict2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'append'
dict1['dict2'] = dict2
dict1
{'a': 1, 'b': 2, 'dict2': {'c': 3, 'd': 4}}

也许你的意思是你想把dict2到dict1的每个键都加起来。在这种情况下,命令将是

^{pr2}$

当调用setdefault方法时,应该用[]更改{},用{}更改{}。在

indexDb.setdefault(linko.text.encode('UTF-8'), []).extend(allArticle)

顺便说一句,您不必检查key是否存在,因为.setdefault()返回字典中可用的键值,如果给定的键不可用,它将返回提供的默认值,即空列表。在

因此,您可能需要按如下方式更新代码:

^{pr2}$

相关问题 更多 >