111 votes

Comment ajouter des éléments à un ensemble vide en python ?

J'ai la procédure suivante :

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

Mais j'obtiens l'erreur suivante :

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

Je ne reçois pas d'erreur si D contient des éléments. Mais j'ai besoin que D soit vide au début.

204voto

Ashwini Chaudhary Points 94431

D = {} est un dictionnaire non défini.

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

Utilisez D = set() :

>>> d = set()
>>> type(d)
<type 'set'>
>>> d.update({1})
>>> d.add(2)
>>> d.update([3,3,3])
>>> d
set([1, 2, 3])

20voto

Sukrit Kalra Points 11349
>>> d = {}
>>> D = set()
>>> type(d)
<type 'dict'>
>>> type(D)
<type 'set'>

Ce que vous avez fait est un dictionnaire et non un ensemble.

El update dans le dictionnaire est utilisée pour mettre à jour le nouveau dictionnaire à partir d'un précédent, comme suit,

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

Alors que dans les ensembles, il est utilisé pour ajouter des éléments à l'ensemble.

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

0voto

lincoln ajanga Points 1

Lorsque vous assignez une variable à des accolades vides {}, par exemple : new_set = {} il devient un dictionnaire. Pour créer un ensemble vide, il faut assigner la variable à un 'set()' : new_set = set()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X