私はQTreeWidgetItemsの束を持つQTreeWidgetを持っています。各QTreeWidgetItemにはQDateTimeの形式のタイムスタンプがあります。 QTreeWidgetはタイムスタンプでソートされます。タイムスタンプでソートされたQTreeWidgetItemsの別のリストがあります。私はこのQTreeWidgetItemsのリストをQTreeWidgetに追加し、QTreeWidgetのQTreeWIdgetItemsのソートされたリストを結合して終了します。QTreeWidgetItemのソートされた2つのリストをマージしソートする方法はありますか?
現在のところ、これは私がQTreeWidgetItemsの二つのリストを組み合わせています方法です:私は2つのPythonのリストをマージしてソートすることを知っている
#1
#self is my QTreeWidget class
numItems = self.topLevelItemCount()
#items is the new list of QTreeWIdgetItems to be added
numAddItems = len(items)
if numAddItems == 0:
return
while addItemIndex < numAddItems:
addItem = items[addItemIndex]
if itemIndex < numItems:
item = self.topLevelItem(itemIndex)
addItemDateTime = items[addItemIndex].getTimestamp()
itemDateTime = item.getTimestamp()
if addItemDateTime < itemDateTime:
self.insertTopLevelItem(itemIndex, addItem)
addItemIndex += 1
else:
self.addTopLevelItem(addItem)
addItemIndex += 1
itemIndex += 1
numItems = self.topLevelItemCount()
、私はこのような何かを行うことができます。
>>> l1 = [1, 3, 4, 7]
>>> l2 = [0, 2, 5, 6, 8, 9]
>>> sorted(l1 + l2)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
私はQTreeWidgetにsortItems()メソッドがあることを知っています。 QTreeWidgetにQDateTimeを使用してソートする方法を教えてください。
#2
#self is a QTreeWidget
#get a list of all the QTreeWidgetItems in the QTreeWidget
currentItems = []
numItems = self.topLevelItemCount()
for i in range(numItems):
currentItems.append(self.topLevelItem(i))
#clear the QTreeWidget
self.clear()
#perform a merge sort on the list of all the QTreeWidgetItems
items = self.mergesort(currentItems + newItems)
for item in items:
self.addTopLevelItem(item)
だから、QTreeWidgetItemsの私の二つのリストを結合するためのより良い方法は何でしょう:私はまた、このような何かを行うことができ
?
私はチェックしていませんが、 'sorted(l1 + l2、key = lambda x:x.getTimestamp())'が正しいと感じます。 –