如何去掉Django(Python)元组中的多余',

10 投票
7 回答
18249 浏览
提问于 2025-04-16 18:05

我在用Django创建一个ID列表的时候遇到一个问题。如果我选择多个ID,那没问题,但如果我只选择一个ID,列表里会多出一个多余的逗号。

testa = tuple([k['id'] for k in queryset.values('id')])
print testa

如果查询结果里正好有一个ID,它会显示

(1234,)

其他情况下就没问题了

(1234,1244)

我该怎么去掉列表里多余的逗号呢?

7 个回答

2

其实你并不需要这样做。冒号只是用来表示元组的字符串形式的。比如,你可以通过下面的方式自己创建一个字符串:

print "(%s)" % ",".join(testa)
3

要创建一个只包含一个值的元组,你需要加一个逗号,即使只有一个值。

你可以通过索引来获取你想要的输出:

print testa[0]
>>>> 1234
17
(1234,)

这是一个正确的Python表示1元组的方式。(1234)是不对的,因为在数学中,这样的括号只是表示一个简单的整数,结果是1234,而不是一个包含它的元组。

对于列表来说情况不同,因为方括号没有同时表示数学运算顺序的功能。所以[1234][1234,]都是有效的长度为1的列表表示方式,默认的文本表示可以没有额外的逗号。

如果你想自己设计一个元组的文本表示方式,而不需要和Python的一样,你可以这样做:

'(%s)' % ', '.join(map(repr, testa))

撰写回答