Come posso aggiungere elementi a un set vuoto in Python


104

Ho la seguente procedura:

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

Ma ricevo il seguente errore:

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

Non ottengo alcun errore se D contiene elementi. Ma ho bisogno che D sia vuoto all'inizio.


3
{}è un dizionario, non un insieme.
Sukrit Kalra

5
Con una riga D={}dichiari un dizionario vuoto, non un insieme. Dichiari un set vuoto di S=set().
Omar Tariq

Risposte:


194

D = {} è un dizionario non impostato.

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

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

Quello che hai fatto è un dizionario e non un set.

Il updatemetodo nel dizionario viene utilizzato per aggiornare il nuovo dizionario da uno precedente, in questo modo,

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

Mentre negli insiemi viene utilizzato per aggiungere elementi all'insieme.

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

0

Quando si assegna una variabile a parentesi graffe vuote {} ad esempio new_set = {}:, diventa un dizionario. Per creare un set vuoto, assegna la variabile a un 'set ()' cioè:new_set = set()

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.