109

我有以下程序:

def myProc(invIndex, keyWord):
    D={}
    for i in range(len(keyWord)):
        if keyWord[i] in invIndex.keys():
                    D.update(invIndex[query[i]])
    return D

但我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: cannot convert dictionary update sequence element #0 to a sequence

如果 D 包含元素,我不会收到任何错误。但我需要 D 一开始是空的。

4

3 回答 3

201

D = {} 是未设置的字典。

>>> d = {}
>>> type(d)
<type 'dict'>

使用 D = set()

>>> d = set()
>>> type(d)
<type 'set'>
>>> d.update({1})
>>> d.add(2)
>>> d.update([3,3,3])
>>> d
set([1, 2, 3])
于 2013-07-07T10:23:05.163 回答
20
>>> d = {}
>>> D = set()
>>> type(d)
<type 'dict'>
>>> type(D)
<type 'set'>

你所做的是字典而不是集合。

字典中的update方法用于从以前的字典更新新字典,如下所示,

>>> abc = {1: 2}
>>> d.update(abc)
>>> d
{1: 2}

而在集合中,它用于将元素添加到集合中。

>>> D.update([1, 2])
>>> D
set([1, 2])
于 2013-07-07T10:24:19.623 回答
0

当您将变量分配给空花括号 {} 例如:new_set = {}时,它就变成了字典。要创建一个空集,请将变量分配给“set()”,即:new_set = set()

于 2020-04-29T08:40:38.863 回答