簡體   English   中英

Python將元組列表轉換為單個元組

[英]Python convert list of tuples into single tuple

有沒有一種方法可以將元組列表轉換為單個元組? 我已經從cursor.fetchall()接收到元組列表,但希望將其合並為一個元組:

curr_table_columns = cursor.fetchall()

例如:

[(u'w_id',), (u'w_name',), (u'w_street',)]

變成

[(u'w_id', u'w_name', u'w_street')]

使用itertools.chain ,這很簡單。 from itertools import chain ,您可以執行以下任一操作:

[tuple(chain.from_iterable(curr_table_columns))]

要么:

[tuple(chain(*curr_table_columns))]

對於長的或無界的可迭代輸入,首選前者(盡管對於無界的輸入,不要包裹在tuple中!); 對於較小的輸入(尤其是已經是listtuple ),后者稍微慢一些,但很好。 任一種都將比genexpr快得多,並且可以為任何大小的輸入建立索引。

嘗試這個:

a=[(u'w_id',), (u'w_name',), (u'w_street',)]

print [tuple([i[0] for i in a])]

輸出:

[(u'w_id', u'w_name', u'w_street')]

沒有效率*,但是很簡單:

>>> ts = [(u'w_id',), (u'w_name',), (u'w_street',)]
>>> sum(ts, ())
('w_id', 'w_name', 'w_street')

因此,如果需要,只需將其包裝在列表中即可:

>>> result = [sum(ts, ())]
>>> result
[('w_id', 'w_name', 'w_street')]

*警告:按比例縮放。 有些人可能會傾向於將某些列名稱連接到單個容器中。 絕對不要嘗試以這種方式處理數百萬個元組。

使用itertools解決方案來解決線性時間問題。

該函數可以將listWidgets項轉換為單個元組,也可以將多個元組元素轉換為單個元組:用於Sqlite3和listwidgets的數據查詢。

def tuple_converter(self,item):
        target = ''
        for i in item:
            target += i + " " 
        target = target.rstrip()
        target = tuple(target.split(","))
        return target
#syntax  name = tuple_converter(tuple((item).split()))

'''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM