我在使用django構建id列表時遇到了一個問題。如果我選擇超過1個ID它確定,但如果我只選擇一個它會在列表中產生額外的','。如何在django(python)中刪除元組中多餘的','
testa = tuple([k['id'] for k in queryset.values('id')])
print testa
如果在查詢集恰好有1號,它會顯示
(1234,)
以外,它確定
(1234,1244)
如何刪除多餘的 '在列表'
我在使用django構建id列表時遇到了一個問題。如果我選擇超過1個ID它確定,但如果我只選擇一個它會在列表中產生額外的','。如何在django(python)中刪除元組中多餘的','
testa = tuple([k['id'] for k in queryset.values('id')])
print testa
如果在查詢集恰好有1號,它會顯示
(1234,)
以外,它確定
(1234,1244)
如何刪除多餘的 '在列表'
要編寫包含單個值的元組,您必須包含逗號,即使只有一個值。
你可以索引元組,以獲得所需的輸出:
print testa[0]
>>>> 1234
其實你不必。冒號只是在元組的字符串表示中。例如,你纔可以通過
print "(%s)" % ",".join(testa)
(1234,)
創建自己的字符串是1元組的正確的Python表示。 (1234)
將是錯誤的,因爲它被視爲一個簡單的數學圓括號,評估爲1234
,而不是包含它的元組。
這是列出不同的,因爲在方括號沒有也意味着mathemtical訂單操作,這雙重目的,因此而[1234]
和是一個長度爲1的列表中都有效交涉,默認的文本表示可以沒有額外的逗號。
如果你正在設計並不需要是相同的Python的一個元組自己的文字表述,你可以做如:
'(%s)' % ', '.join(map(repr, testa))
這就是如何蟒蛇顯示單值的元組,還要注意,用單值創建元組的推薦語法也是x = (1,)
,這有助於區分元組和函數調用。 如果你真的想要的輸出像你描述你可以嘗試
testa = tuple([k['id'] for k in queryset.values('id')])
if len(testa)==1:
print '(%s)'%testa[0]
else:
print testa
只是想知道你在django需要它嗎? – 2011-05-21 14:07:35
我需要用於sql語句的id列表。我需要在'..in(list of id)'中使用它。如果id是單個,它將生成'..in(id,)',其中將生成sql錯誤 – Najmi 2011-05-21 14:25:56
呦說你想要一個清單,但事實上你正在創建一個元組。
爲了得到一個列表的IDS看看values_list
>>> Entry.objects.values_list('id', flat=True).order_by('id')
[1, 2, 3, ...]
>>> Entry.objects.filter(id=1).values_list('id', flat=True)
[1]
你不應該永遠在你的Django應用程序了'print'。 – hop 2011-05-21 14:04:52
列表中沒有額外的','。它是一個元素的元組。你確切的問題是什麼?如果你不想把它打印成'(1234,)',你可以使用'「,」.join(str(x)for testa中的x)'。 – khachik 2011-05-21 14:10:03
這就好像在說「我打印了pi的值,但在3之後有一段時間 - 逗號並不是真正的元組的一部分,它只是在那裏顯示它是一個元組。 – PaulMcG 2011-05-21 14:35:11