Como posso adicionar itens a um conjunto vazio em python


104

Tenho o seguinte procedimento:

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

Mas estou recebendo o seguinte erro:

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

Não recebo nenhum erro se D contiver elementos. Mas preciso que D esteja vazio no início.


3
{}é um dicionário, não um conjunto.
Sukrit Kalra

5
Com uma linha, D={}você declara um dicionário vazio, não um conjunto. Você declara um conjunto vazio por S=set().
Omar Tariq

Respostas:


194

D = {} é um dicionário não definido.

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

Use 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'>

O que você fez é um dicionário e não um conjunto.

O updatemétodo no dicionário é usado para atualizar o novo dicionário de um anterior, assim,

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

Enquanto em conjuntos, é usado para adicionar elementos ao conjunto.

>>> D.update([1, 2])
>>> D
set([1, 2])

0

Quando você atribui uma variável a chaves vazias {} por exemplo:, new_set = {}ela se torna um dicionário. Para criar um conjunto vazio, atribua a variável a um 'conjunto ()', ou seja:new_set = set()

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.