I have one problem in building a list of id using django. if i choose more than 1 id it ok but if i choose only one it will produce extra ',' in list.
testa = tuple([k['id'] for k in queryset.values('id')])
print testa
if in the queryset have exactly 1 id, it will display
(1234,)
other than that it ok
(1234,1244)
How can i remove extra ', in list'
is the correct Python representation of a 1-tuple.
(1234)
would be wrong as that is taken as a simple integer in mathematical parentheses, evaluating to1234
, not a tuple containing it.This is different for lists because the square brackets don't have this double purpose of also meaning mathemtical order-of-operations, so whilst
[1234]
and[1234,]
are both valid representations of a length-1-list, the default textual representation can be without the extra comma.If you are devising your own textual representation of a tuple that does not need to be the same as Python's, you could do eg.:
To write a tuple containing a single value you have to include a comma, even though there is only one value.
You can index the tuple to get the desired output:
thats' how python displays the tuples with single values , also note that the recommended syntax for creating a tuple with single value is also
x = (1,)
that helps in differentiating a tuple from a function call . If you really want an output like you describe you can tryYo say you want a list but de facto you are creating a tuple.
To get a list of ids take a look at
values_list
actually you don't have to. the colon sign is just there in a string representation of the tuple. For example you can just create your own string by