J'ai quelques objets.ID-s que j'essaie de stocker dans la session de l'utilisateur comme tuple. Lorsque j'ajoute le premier, cela fonctionne mais le tuple ressemble à ceci (u'2',)
mais lorsque j'essaie d'en ajouter un nouveau en utilisant mytuple = mytuple + new.id
erreur obtenue can only concatenate tuple (not "unicode") to tuple
.
Réponses
Trop de publicités?Du tuple à la liste au tuple :
a = ('2',)
b = 'b'
l = list(a)
l.append(b)
tuple(l)
Ou avec une liste plus longue d'éléments à ajouter
a = ('2',)
items = ['o', 'k', 'd', 'o']
l = list(a)
for x in items:
l.append(x)
print tuple(l)
vous donne
>>>
('2', 'o', 'k', 'd', 'o')
Le point ici est : La liste est une mutable type de séquence. Vous pouvez donc modifier une liste donnée en ajoutant ou en supprimant des éléments. Tuple est un immuable type de séquence. Vous ne pouvez pas modifier un tuple. Vous devez donc créer un nouveau un.
Le tuple ne peut que permettre d'ajouter tuple
à elle. La meilleure façon de le faire est :
mytuple =(u'2',)
mytuple +=(new.id,)
J'ai essayé le même scénario avec les données ci-dessous, tout semble fonctionner correctement.
>>> mytuple = (u'2',)
>>> mytuple += ('example text',)
>>> print mytuple
(u'2','example text')
- Réponses précédentes
- Plus de réponses