Как я могу добавить элементы в пустой набор в Python


104

У меня следующая процедура:

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 было пустым в начале.


3
{}это словарь, а не набор.
Сукрит Калра 07

5
Строкой D={}вы объявляете пустой словарь, а не набор. Вы объявляете пустой набор S=set().
Омар Тарик

Ответы:


194

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])

19
>>> 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])

0

Когда вы назначаете переменную пустым фигурным скобкам {}, например:, new_set = {}она становится словарем. Чтобы создать пустой набор, назначьте переменную set (), т.е.new_set = set()

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.