Python元组未填充

Python元组未填充,python,loops,tuples,Python,Loops,Tuples,当我尝试在for循环中填充一个元组时,这里肯定缺少了什么 ...more code above... colItems = objSWbemServices.ExecQuery(queryString) #print type(colItems) 是否需要上述行 # print the results for item in colItems: logTuple = (item.SourceName, item.Type, item.TimeGenerated, it

当我尝试在for循环中填充一个元组时,这里肯定缺少了什么

    ...more code above...
    colItems = objSWbemServices.ExecQuery(queryString)

#print type(colItems)
是否需要上述行

# print the results
for item in colItems:
    logTuple = (item.SourceName, item.Type, item.TimeGenerated, item.Message)
logTuple.sort(sortByTime)
return logTuple
上面的代码会将这些字段输入元组吗

下面是要排序的代码,不过我还没有测试过

def sortByTime(t1, t2):
        if t1[2] < t2[2]:
            return -1
        elif t1[2] > t2[2]:
            return 1
        else:
            return 0
def排序时间(t1,t2):
如果t1[2]t2[2]:
返回1
其他:
返回0

感谢您的帮助。

您的意思可能是将元组添加到列表中(而不是将logTuple设置为for循环中最后创建的元组):

排序可通过以下方式完成:

logTuples.sort(key=operator.itemgetter(2))

我不熟悉ExecQuery或您正在使用的结构,但我知道在for循环中,每次执行循环体时,您都在重写logTuple。这应该可以做到:

logTuples = []
for item in colItems:
    logTuples.append( (item.SourceName, item.Type, item.TimeGenerated, item.Message) )
logTuples.sort(key=operator.itemgetter(2)) #credit: Thomas Jung
return logTuples

但是你不能附加到元组?你可以做
l.append((1,)
。这就是我得到的:C:\work in progress>ntlogdata.py Traceback(最近一次调用):文件“C:\work in progress\ntlogdata.py”,第20行,在print colItems.SourceName,colItems.Type,colItems.TimeGenerated,colItems.M message文件中“C:\Python27\lib\site packages\win32com\client\dynamic.py”,第516行,在getattr中,引发AttributeError(“%s.%s”%(self.\u用户名,attr))AttributeError:.SourceName C:\work in progress>与您的输入数据
colItems。SourceName
无法计算。属性
colItems.SourceName
colItems
中丢失。您可能是指
。噢,我对更新您的时间函数不好,第一次就可以了。我真傻。看看Thomas Jun我更新了我的帖子来反映这一点
logTuples = []
for item in colItems:
    logTuples.append( (item.SourceName, item.Type, item.TimeGenerated, item.Message) )
logTuples.sort(key=operator.itemgetter(2)) #credit: Thomas Jung
return logTuples